我们可以用make文件安装内核模块
我有工作内核模块,我使用insmod/modprobe命令手动安装,如阅读书籍所了解的。不过我想知道是否有办法编译后自动执行 - 所以基本上如何自动化命令insmod/modprobe?我们可以用make文件安装内核模块
我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安装
[email protected]:/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,但如果有人可以举一个例子,它会帮助我理解好基本情况来引用。命令shell指令
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:
install:
modprobe wakeup_counter
modprobe thread_module
感谢您的答案 - 我需要做一些小的改变,而不是modules_install - 我不得不将其更改为modules ..但是我必须将其更改为模块..但是按照您的步骤指出,我更了解一些更好的东西..非常感谢回答 – thedreamer
提高张贴@ cm161答案为未来用户以突出其工作对我来说
下面具体步骤Makefile使用以下步骤
第1步: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
您可以自动执行复制。ko通过为'all'目标添加'cp'规则来创建文件,如下所示:all:
True !! - 相应地更新了答案 – thedreamer
安装软件通常是由'让install'命令执行。只需在makefile中创建“安装”目标,并将所有需要的操作放入其配方中即可。 – Tsyvarev
是的,并从它调用'make ... modules_install'。 – 0andriy
任何可以在命令shell中运行的命令,都可以将该操作添加为makefile中目标的规则。 – cm161