我们可以用 make 文件安装内核模块吗

can we install kernel module with make file

我有工作的内核模块,我通过阅读本书学到的 insmod/modprobe 命令手动安装。但是我想知道是否有办法在编译后自动执行 - 所以基本上如何自动化 insmod/modprobe 命令?

我的 modprobe 也有一个依赖文件 thread_module.o

到目前为止我的 make 文件

obj-m := wakeup_counter.o
obj-m += thread_module.o
$INSTALL_MOD_PATH = /lib/modules/2.6.32-5-amd64/

all:
    make -C /lib/modules/2.6.32-5-amd64/build M=$(PWD) modules

install:
    make $(INSTALL_MOD_PATH) =/build modules_install
clean:
    make -C /lib/modules/2.6.32-5-amd64/build M=$(PWD) modules

运行 后的输出:make install

root@xyz:/home/xyz/Desktop/Drivers/symbols# make install
make -C /lib/modules/2.6.32-5-amd64/build M=/home/xyz/Desktop/Drivers/symbols modules_install
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-5-amd64'
  INSTALL /home/xyz/Desktop/Drivers/symbols/thread_module.ko
  INSTALL /home/xyz/Desktop/Drivers/symbols/wakeup_counter.ko
  DEPMOD  2.6.32-5-amd64
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-5-amd64'

编辑:经过评论和 https://www.kernel.org/doc/Documentation/kbuild/modules.txt 我尝试添加安装命令,但我没有在构建路径中看到任何模块 - 同样在高级别,我得到了我们在 cmd 提示符下输入的内容,我们在 Makefile 中输入但如果有人能举个例子,它会帮助我理解并提供很好的基本案例参考。

obj-m := wakeup_counter.o
obj-m += thread_module.o

KDIR = /lib/modules/2.6.32-5-amd64/build

all:
    make -C $(KDIR) M=$(PWD) modules_install

clean:
    make -C $(KDIR) M=$(PWD) clean

命令示例 shell 指令在 Makefile 中用作规则:

install:
    modprobe wakeup_counter
    modprobe thread_module

为未来的用户增强@cm161 发布的答案,以突出显示对我有用的确切步骤

在下面的 Makefile 中使用以下步骤

第 1 步:make(仅键入 make 命令)- 用于创建模块,即 .ko 文件和相关文件

第 2 步:进行安装

第 3 步:现在执行 lsmod,您应该能够看到新模块

obj-m := wakeup_counter.o
obj-m += thread_module.o

KDIR = /lib/modules/2.6.32-5-amd64/build

all:
    make -C $(KDIR) M=$(PWD) modules
    cp wakeup_counter.ko /lib/modules/2.6.32-5-amd64/
    cp thread_module.ko /lib/modules/2.6.32-5-amd64/

install:
    modprobe wakeup_counter
    modprobe thread_module

clean:
    make -C $(KDIR) M=$(PWD) clean