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

Yocto:无需补丁向内核源码添加驱动的可行方法

无需补丁在Yocto中添加内核源码文件的方法

当然有几种实操性强的方式可以跳过补丁步骤,直接添加自定义的.c/.h文件并让Yocto编译到内核或作为模块,下面是具体方案:

方案1:直接向内核源码树追加文件并编译

适合需要把代码整合进内核源码树(比如新增内置驱动)的场景:

  • 在你的自定义layer中创建对应内核recipe的bbappend文件,比如recipes-kernel/linux/linux-yocto_%.bbappend
  • 在layer的files目录下放你的mydriver.c和mydriver.h文件
  • 在bbappend中添加文件复制逻辑,将文件放到内核源码的指定目录:
    SRC_URI += "file://mydriver.c file://mydriver.h"
    
    do_configure_prepend() {
        # 示例:把文件复制到网卡驱动目录
        cp ${WORKDIR}/mydriver.c ${S}/drivers/net/
        cp ${WORKDIR}/mydriver.h ${S}/drivers/net/
        # 追加编译规则到对应目录的Makefile
        echo 'obj-$(CONFIG_MY_DRIVER) += mydriver.o' >> ${S}/drivers/net/Makefile
    }
    
  • 添加内核配置启用驱动:在files目录创建mydriver.cfg,内容为CONFIG_MY_DRIVER=y(或=m编译为模块),然后在bbappend中追加:
    KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/mydriver.cfg"
    

方案2:编译外部内核模块(Out-of-Tree)

这是最灵活的方式,完全独立于内核源码树,不用修改任何内核文件:

  • 创建独立的模块recipe,比如recipes-kernel/mydriver/mydriver.bb,内容示例:
    SUMMARY = "Custom out-of-tree kernel module"
    LICENSE = "GPL-2.0-only"
    LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
    
    SRC_URI = "file://mydriver.c file://mydriver.h file://Makefile"
    S = "${WORKDIR}"
    
    inherit module
    
    MODULES_INSTALL_TARGET = "/lib/modules/${KERNEL_VERSION}/extra/"
    
  • 对应的files目录下放mydriver.c、mydriver.h和Makefile,Makefile内容:
    obj-m += mydriver.o
    KERNELDIR ?= /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)
    
    all:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
    
    clean:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
    
  • 在你的镜像recipe中添加IMAGE_INSTALL:append = " mydriver",模块就会被打包进镜像

方案3:用devtool本地管理源码(不生成补丁)

如果习惯用devtool,也能避免补丁生成:

  • 执行devtool modify linux-yocto将内核源码拉到本地工作区
  • 在本地工作区直接新增.c/.h文件,修改必要的Makefile/Kconfig
  • 开发完成后,执行devtool finish linux-yocto <你的自定义layer>,devtool会把新增和修改的文件直接复制到layer的files目录,后续构建时Yocto会直接用这些文件覆盖内核源码树内容,无需生成补丁

这些方案都能简化开发流程,其中外部模块方案最适合独立驱动的开发和维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:25:35