我们可以用 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
我有工作的内核模块,我通过阅读本书学到的 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