编译实时内核并安装
查看当前内核版本
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