Ubuntu22.04 安装Linux实时补丁preempt_rt记录
准备工作
PREEMPT_RT 是一个实时补丁,可以显著提高 Linux 内核的实时性能。
启动RT内核需下载linuxn内核源码和RT补丁。
查看当前Ubuntu版本后,下载相近版本的linuxn内核源码和RT补丁。
- 查看当前Ubuntu内核版本
uname -a
未安装RT补丁时,Ubuntu22.04的内核为:6.8.0-50-generic PREEMPT_DYNAMIC
- 下载相应内核源码和RT补丁
选择相近版本内核 linux-6.8.2以及内核相同版本补丁 patch-6.8.2-rt11
实际操作时发现安装更新的版本也可以运行,但装完之后电脑卡卡的,不知道是不是太新了和Ubuntu某些地方不适配
RT补丁:https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
Linux内核:https://mirrors.edge.kernel.org/pub/linux/kernel/
- 可能需要的依赖:
sudo apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf fakeroot dwarves
- 解压内核源码和补丁:
tar -xzf linux-6.8.2.tar.gz ##解压
gunzip patch-6.8.2-rt11.patch.gz ##解压
cd linux-6.8.2 ##进入内核源码目录
patch -p1 < ../patch-6.8.2-rt11.patch ##应用补丁
cp -v /boot/config-6.8.0-50-generic .config ##复制现有的内核配置文件
配置内核:
- 使用 menuconfig 进行内核配置:
make menuconfig
General Setup -> Preemption Model 设置为 Fully Preemptible Kernel(RT)
Device Drivers -> staging drivers 设置为 不开启 ——[ ] 默认开启,按N取消
- 编辑 .config 文件:
vi .config
CONFIG_SYSTEM_TRUSTED_KEYS=“”
CONFIG_SYSTEM_REVOCATION_KEYS=“”
CONFIG_DEBUG_INFO=n
应用内核
安装模块命令要加入INSTSALL_MOD_STRIP=1
部分,否则重启后内核过大,显示 out of memory 无法启动
make -j$(nproc) #编译内核
sudo make INSTSALL_MOD_STRIP=1 modules_install #安装模块
sudo make install #安装内核
查看编译后核心,注意核心大小
cd /boot
ls -l
重启系统并查看当前 Ubuntu 内核版本,显示带有PREEMPT_RT内核
sudo reboot
uname -a
测试实时性
sudo apt-get install rt-tests ##下载rt-test
sudo cyclictest -l10000000 -m -t5 -p99 -i2 -h100
代码
##相关依赖:
sudo apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf fakeroot dwarves
##查看当前Ubuntu内核版本:
uname -a
##下载相应内核及补丁
https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
https://mirrors.edge.kernel.org/pub/linux/kernel/
##解压内核和补丁
tar -xzf linux-6.8.2.tar.gz
gunzip patch-6.8.2-rt11.patch.gz
##安装
cd ~/kernel/linux-6.8.2
patch -p1 < ../patch-*.patch
cp -v /boot/config-6.8.0-50-generic .config
##配置
make menuconfig
vi .config
##编译
make -j$(nproc)
sudo make INSTSALL_MOD_STRIP=1 modules_install
sudo make install
##检查
cd /boot
ls -l
##重启
sudo reboot
##查看内核
uname -a
##测试
sudo apt-get install rt-tests
sudo cyclictest -l10000000 -m -t5 -p99 -i2 -h100
参考链接
Ubuntu22.04编译实时内核安装preempt_rt实时补丁
linux打实时补丁 | ubuntu20.04安装实时内核补丁PREEMPT_RT及正确启用RT
使用 INSTALL_MOD_STRIP 在 modules_install 的时候 strip 驱动, 减少磁盘占用