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

时间:2015-11-02 01:51:50

标签: makefile kernel linux-device-driver kernel-module insmod

我有工作的内核模块,我用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但是如果有人可以给出一个例子,它可以帮助我理解很好的基础案例来引用。

2 个答案:

答案 0 :(得分:1)

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

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

install:
    modprobe wakeup_counter
    modprobe thread_module

答案 1 :(得分:1)

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

使用以下Makefile使用以下步骤

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

第2步:make install

步骤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