Yocto Mickledore:FIFO策略pthread的组RT调度默认禁用方法问询
解决Yocto中默认禁用组RT调度的方法
针对你在6.1-mickledore分支构建Yocto镜像时遇到的组RT调度导致pthread_create相关程序提前退出的问题,以下是两种在BitBake配方中永久设置kernel.sched_rt_runtime_us=-1的方法:
方法1:通过sysctl配置文件永久生效
系统启动时,systemd会加载/etc/sysctl.d/目录下的配置文件,你可以通过添加自定义配置文件实现默认设置:
- 选择一个基础配方(比如
base-files)创建.bbappend文件,或者新建一个独立的小配方(比如rt-group-disable_0.1.bb)。 - 在配方的
files目录下创建配置文件99-disable-rt-group.conf,内容如下:kernel.sched_rt_runtime_us=-1 - 在配方中添加安装逻辑:
SRC_URI += "file://99-disable-rt-group.conf" do_install_append() { # 创建sysctl.d目录(确保存在) install -d ${D}${sysconfdir}/sysctl.d # 安装配置文件,权限设为0644 install -m 0644 ${WORKDIR}/99-disable-rt-group.conf ${D}${sysconfdir}/sysctl.d/ } - 将配方添加到你的构建层,重新构建镜像即可。
方法2:通过内核命令行参数生效
在系统启动时直接通过内核命令行设置该参数,生效时机更早:
- 可以在
local.conf中添加内核命令行追加参数:KERNEL_CMDLINE_APPEND = "sysctl.kernel.sched_rt_runtime_us=-1" - 或者针对Linux内核配方创建
.bbappend文件,添加:KERNEL_CMDLINE_APPEND += "sysctl.kernel.sched_rt_runtime_us=-1"
验证方法
构建完成后启动目标系统,执行以下命令确认参数已生效:
sysctl kernel.sched_rt_runtime_us
输出应为kernel.sched_rt_runtime_us = -1。
内容的提问来源于stack exchange,提问作者tyleax
相关产品推荐
相关产品推荐

