You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Yocto(thud分支)构建PREEMPT_RT实时镜像?

Yocto Thud分支构建PREEMPT_RT实时镜像问题解答

1. 预查询bitbake内核构建版本与RT补丁匹配规则

  • 执行构建前查询内核版本:运行命令 bitbake virtual/kernel -e | grep "^PV =",输出的PV变量值即为bitbake即将构建的内核完整版本号。也可执行 bitbake -s | grep linux- 查看所有内核recipe的版本信息,匹配你当前使用的内核条目即可。
  • 补丁匹配要求:PREEMPT_RT补丁必须和内核的次版本号完全匹配才能正常应用,跨小版本打补丁大概率会出现补丁偏移、应用失败,就算强行应用成功也可能出现内核功能异常、编译报错等问题。你当前找不到4.14.112对应RT补丁的话,可以先将内核小版本升级到有对应RT补丁的4.14.x分支版本即可。

2. Yocto内核正确应用PREEMPT_RT补丁的步骤

方案一:使用官方meta-rt层(推荐)

Thud版本对应有官方维护的meta-rt层,直接将该层添加到 conf/bblayers.conf 的BBLAYERS变量中,再在conf/local.conf中添加配置 PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-rt",直接构建即可自动应用对应版本的PREEMPT_RT补丁,无需手动处理补丁。

方案二:手动应用自定义补丁

如果需要使用自己指定的RT补丁,按以下步骤操作:

  1. 新建内核recipe对应的bbappend文件,在文件中添加补丁条目:SRC_URI += "file://patch-xxx-rtxx.patch",将补丁文件放到bbappend同级的files目录下。
  2. 新增内核配置片段(.cfg文件),添加到SRC_URI中,核心配置项如下:
    CONFIG_PREEMPT_RT=y
    CONFIG_HIGH_RES_TIMERS=y
    CONFIG_NO_HZ_FULL=y
    # 关闭不需要的调试选项避免影响实时性
    CONFIG_DEBUG_PREEMPT=n
    
  3. 执行命令清空内核构建缓存并重新编译内核:bitbake virtual/kernel -c cleansstate && bitbake virtual/kernel,确认补丁应用、内核编译无报错后,再执行bitbake core-image-minimal构建完整实时镜像。

如果补丁应用过程中出现冲突,可先手动解压内核源码,应用补丁后解决冲突,再将修改导出为新补丁替换原有补丁即可。

内容的提问来源于stack exchange,提问作者shravan Kulal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:00:00