我正在尝试使用DKMS为运行中的内核(4.4)构 build 备树覆盖。我朴素的Makefile如下:

PWD := $(shell pwd)

dtbo-y += my-awsome-overlay.dtbo
targets += $(dtbo-y)

all:
        make -C /lib/modules/${kernelver}/build M=$(PWD) dtbs

clean:
        make -C /lib/modules/${kernelver}/build M=$(PWD) clean

但是,我收到以下错误:
make[1]: Entering directory '/usr/src/linux-headers-4.4.13-v7+'
/bin/sh: 1: cannot create arch/arm/boot/dts/overlays/modules.order: Permission denied

我该如何解决?没有root特权应该可以,对吗?

用于使用DKMS构建dt覆盖图的标准Makefile看起来如何?

编辑:我认为我已经解决了问题,请参见下文。但是,仍然欢迎有一个合格的答案。

最佳答案

  • my-awsome-overlay.dtbo更改为my-awsome.dtbo。假设dts的文件名为my-awsome-overlay.dts
  • 添加always := $(dtbo-y)
  • 在没有目标的情况下调用make(删除dtbs)。

  • 这是一个有效的Makefile:
    PWD := $(shell pwd)
    
    dtbo-y += my-awsome.dtbo
    
    targets += $(dtbo-y)
    always  := $(dtbo-y)
    
    all:
            make -C /lib/modules/${kernelver}/build M=$(PWD)
    
    clean:
            make -C /lib/modules/${kernelver}/build M=$(PWD) clean
    

    08-16 03:52