尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

linux kernel 编译/安装/切换/删除 以及添加preempt rt patch的方法

linux kernel 编译/安装/切换/删除 以及添加preempt rt patch的方法
📅 发布时间:2026/6/19 1:15:03

目录
  • 编译preempt_rt内核
    • 解压源码及补丁
    • 使用make bindeb-pkg进行编译
  • 安装编译的新内核
    • 更新grub
  • 切换内核:
    • 更改grub默认启动项
    • 切换启动内核
    • 更新开机引导文件
    • 重启切换指定内核
    • 注意
  • 删除内核

编译preempt_rt内核

注意:因为编译的是x86的设备,所以不存在交叉编译,arm编译需要指定交叉编译工具链及架构等,不能照搬这份教程

解压源码及补丁

preempt_rt补丁下载链接

选取匹配版本的补丁下载

tar -xzvf linux-6.8.2.tar.gz
gunzip patch-6.8.2-rt11.patch.gz

将解压得到的patch-6.8.2-rt11.patch文件复制到内核解压文件夹linux-6.8.2中,执行以下命令,make menuconfig需要将CONFIG_PREEMPT_RT的配置enable:

patch -p1 < patch-6.8.2-rt11.patch
make menuconfig # need to config "CONFIG_PREEMPT_RT=y"
make bindeb-pkg -j 16

如果有证书密钥问题可以尝试禁用,一般不需要执行

scripts/config --disable SYSTEM_TRUSTED_KEYS 
scripts/config --disable SYSTEM_REVOCATION_KEYS 

使用make bindeb-pkg进行编译

sudo make bindeb-pkg -j16

执行完成之后,在源码目录的上层会生成4个文件

linux-headers-6.1.80--000_6.1.80-rt26-0_amd64.deb #kernel头文件,kernel模块开发时会需要
linux-image-6.1.80--000_6.1.80-rt26-0_amd64.deb
linux-image-6.1.80--000-dbg_6.1.80-rt26-0_amd64.deb # debug版本,调试需要
linux-libc-dev_6.1.80-rt26-0_amd64.deb

安装编译的新内核

拷贝生成的所有deb到需要安装的目标机器上,执行安装(tips: linux-image-6.1.80--000-dbg_6.1.80-rt26-0_amd64.deb是debug版本image,可以不用拷贝)

sudo dpkg -i *.deb

更新grub

安装完成后需要更新grub

sudo update-grub

重启后就可以切换到想要的内核,因为加了rt补丁,所以会有“PREEMPT_RT”的字段(忽略版本不对的问题,手头没设备,随便找的图)

uname -a #查看当前内核

alt text

切换内核:

查看需要使用的内核在启动选项中的位置

gedit /boot/grub/grub.cfg

之后我们向下查找,直至看到 menuentry ‘Ubuntu’ ,menuentry表示grub启动选项的显示条目。如下所示

aiai@aiai-AMAX-5570:~$ grep menuentry /boot/grub/grub.cfg
if [ x"${feature_menuentry_id}" = xy ]; thenmenuentry_id_option="--id"menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-7a1c4c23-68ef-4f9e-b834-0c629dce82c2' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-7a1c4c23-68ef-4f9e-b834-0c629dce82c2' {menuentry 'Ubuntu, with Linux 6.8.2-rt11' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.8.2-rt11-advanced-7a1c4c23-68ef-4f9e-b834-0c629dce82c2' {menuentry 'Ubuntu, with Linux 6.8.2-rt11 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.8.2-rt11-recovery-7a1c4c23-68ef-4f9e-b834-0c629dce82c2' {menuentry 'Ubuntu, with Linux 6.8.0-57-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.8.0-57-generic-advanced-7a1c4c23-68ef-4f9e-b834-0c629dce82c2' {menuentry 'Ubuntu, with Linux 6.8.0-57-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.8.0-57-generic-recovery-7a1c4c23-68ef-4f9e-b834-0c629dce82c2' {
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {

Advanced options for Ubuntu下有四个启动选项,在grub中的序号分别是0-3

更改grub默认启动项

该命令需要root模式下操作

sudo gedit /etc/default/grub

切换启动内核

打开grub文件后,找到 GRUB_DEFAULT=0 该项定义,可以修改,指定启动的内核“1 > x”,x为需要启动的kernel序号

GRUB_DEFAULT="1 > 2" #对应启动序号2,即'Ubuntu, with Linux 6.8.0-57-generic'

更新开机引导文件

sudo update-grub

重启切换指定内核

reboot

注意

有时因为操作失误,会出现grub中的内核实际上已经被删除的同步问题,可以查询想要的内核是否已经被安装

dpkg -l |grep linux-image

删除内核

首先查看当前使用的内核版本:

uname -a

正在使用的内核是无法删除的,我们可以删除其他内核
image-1

查询目前系统中存在的内核版本:

$ dpkg --get-selections | grep linux-image
linux-image-5.15.0-1026-intel-iotg              install
linux-image-6.6.78-rt51-test                    hold
linux-image-intel-iotg                          install

使用以下命令卸载当前未使用的多余内核:

sudo apt -P linux-image-5.15.0-1026-intel-iotg

这时再查看目前系统中存在的内核,会发现卸载的内核变成啦deinstall:

$ dpkg --get-selections | grep linux-image
linux-image-5.15.0-1026-intel-iotg              deinstall
linux-image-6.6.78-rt51-test                    hold
linux-image-intel-iotg                          install

相关新闻

  • 农业环境监测Agent低功耗设计(基于LoRa与NB-IoT的实测对比)
  • Clipper2终极指南:快速掌握多边形裁剪与偏移技术
  • 【金融合规自动化监控指南】:为什么90%的机构都忽略了这3项规则?

最新新闻

  • AI模型版本传闻的真相:如何识别V4烟雾弹与提取真实信号
  • 2026优选宁波AI推广公司 多维度排名推荐解析 - 起跑123
  • 从奔腾浮点除错误看硬件可靠性:浮点运算、芯片测试与危机管理
  • 2026寄快递省钱攻略:快递收费标准与折扣技巧大全 - 快递物流资讯
  • P2020DS开发平台:深入解析控制、调试与电源管理核心架构
  • MPC821嵌入式处理器外部信号接口深度解析与硬件设计实战

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号