Ubuntu 20.04 打RTAI实时内核补丁

编译实时内核并安装

查看当前内核版本

uname -r

笔者当前版本为 5.15.0-46-generic ,去下面网址中下载版本相近的内核文件和补丁文件,笔者选择的是 linux-5.15.65.tar.gz 和 patch-5.15.65-rt49.patch.gz ,可以先下 patch 包,然后根据对应的版本找内核包,不过不一定需要版本完全一致,相近的版本大概率也是可行的

https://www.kernel.org/pub/linux/kernel/
https://www.kernel.org/pub/linux/kernel/projects/rt/

解压内核然后解压补丁,版本不同的话可以使用 TAB 键来补全

tar -xzvf linux-5.15.65.tar.gz
cd linux-5.15.65
gzip -cd ../patch-5.15.65-rt49.patch.gz | patch -p1 --verbose

安装依赖

sudo apt-get install autoconf bison build-essential dkms dwarves fakeroot flex libelf-dev libiberty-dev libidn11 libidn11-dev libncurses-dev libpci-dev libssl-dev libudev-dev minizip openssl zlibc zstd

复制当前内核的配置文件(用 TAB 补全),进入 config 交互界面调整下面设置,SAVE 后 EXIT

cp /boot/config-xxxx-generic .config
make menuconfig
General Setup -> Preemption Model 设置为 Fully Preemptible Kernel(RT)
General Setup -> Timers subsystem -> Timer tick handling 设置为 Full dynticks system
General Setup -> Timers subsystem 开启 High Resolution Timer Support
Processor type and features -> Timer frequency 设置为 1000 HZ

然后编辑 .config 并修改以下内容

sudo gedit .config
CONFIG_SYSTEM_TRUSTED_KEY=""
CONFIG_SYSTEM_REVOCATION_KEYS="" 

编译内核,线程数设为和 CPU 线程数相同

make -j`nproc` deb-pkg

安装内核,* 不要替换,所有编译后的文件都需要安装

sudo dpkg -i ../*.deb

查看当前所有已安装内核

cat /boot/grub/grub.cfg | grep "menuentry 'Ubuntu"

(如果是用 dpkg 方式安装的不需要这一步)找到新安装的内核并设置为默认启动项,然后更新启动顺序并重启

sudo grub-set-default 'Ubuntu, Linux 5.15.65-rt49'
sudo update-grub
reboot

或者可以设置开机等待时间手动选择内核,默认以新内核启动,高级选项里面有旧内核

sudo gedit /etc/default/grub
# 修改下面键值
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5

更新grub后重启查看下内核是否更新了

sudo update-grub
uname -r

如果只需要实时内核不需要显卡驱动后面内容可以不看了.

安装 Nvidia 显卡驱动

首先重启切回非实时内核,然后禁用nouveau,在文件末尾插入以下内容

sudo gedit /etc/modprobe.d/blacklist.conf
blacklist nouveau
options nouveau modeset=0

保存后重启生效

sudo update-initramfs -u
reboot

重启后验证,如无任何输出则生效

lsmod | grep nouveau

卸载显卡驱动

sudo apt purge nvidia*

去 Nvidia 官网下载安装文件后安装(即不能直接安装二进制版本),在有 DKMS 字样的页面选择 YES ,其他都选择 NO ,否则可能无法开机,因此先设定好 root 密码再重启

chmod +x xxx.run
sudo bash ./xxx.run

如果不慎选错无法开机,则重启进 Recovery Mode 后卸载驱动,重启后若提示 nvidia-drm 相关错误无法安装则输入第二段内容

mount -n -o remount,rw /
apt purge nvidia*
rm /etc/X11/xorg.conf
reboot
systemctl isolate multi-user.target
# 进root账户
modprobe -r nvidia-drm
systemctl start graphical.target

查看是否安装成功

nvidia-smi

重启切回实时内核,然后保存下面内容为 install-nvidia.sh ,记得修改第四行的文件名

原始版本(运行时下载)
https://github.com/ApolloAuto/apollo-kernel/blob/master/linux/install-nvidia.sh

查看代码

执行脚本

chmod +x ./install-nvidia.sh
sudo bash ./install-nvidia.sh

查看驱动信息

nvidia-smi

设置首选独显

sudo apt install nvidia-prime
sudo prime-select nvidia

测试实时性,观察最右侧的 MAX ,如果一直只有几十,说明是实时系统了,如果是非实时系统,运行一段时间会增加到几千甚至上万

sudo apt-get install rt-tests
sudo cyclictest -a -t -p 99

感谢

ubuntu打实时内核补丁教程以及安装后显卡驱动问题解决方法
https://blog.csdn.net/weixin_39275295/article/details/119173247

Ubuntu 20.04安装RT-PREEMPT实时内核补丁
https://blog.csdn.net/qq_28882933/article/details/118293544?spm=1001.2014.3001.5506

为ROS 2构建实时Linux
http://dev.ros2.fishros.com/doc/Tutorials/Building-Realtime-rt_preempt-kernel-for-ROS-2.html

使用实时补丁内核的ubuntu中安装nvidia显卡驱动
https://blog.csdn.net/tang05505622334/article/details/103477086

如何为 Apollo 安装低时延/实时内核
https://daobook.github.io/apollo/docs/howto/how_to_install_apollo_kernel_cn.html?highlight=realtime

How to unload kernel module 'nvidia-drm'?
https://unix.stackexchange.com/questions/440840/how-to-unload-kernel-module-nvidia-drm

How can I remove nvidia drivers?
https://askubuntu.com/questions/50617/how-can-i-remove-nvidia-drivers

jlelli/rt-tests
https://github.com/jlelli/rt-tests

原文链接:

https://www.cnblogs.com/Pyrokine/p/16695196.html 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值