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