type
Post
status
Published
slug
2023/07/05/Hands-on-practice---insertion-and-deletion-of-kernel-modules
summary
tags
工具
Linux
Arch
category
Linux
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM
Hello World kernel module
今天开始学习内核模块的 hello world 的编写。在整个过程中,我们需要完成 helloworld 模块的编写,并且对它进行插入和删除操作。
编码
helloworld.c
在编写Linux内核模块的时候,我们首先要编写自己的.c文件,然后需要编写自己的Makefile文件,之后使用make命令来对自己的.c文件进行编译,生成.ko文件,最后的.ko文件就是我们最后所需要的模块了,我们就是对它进行插入和删除。
首先我们来编写自己的.c文件
#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> // 支持Linux的模块机制 static int __init lkm_init(void) // 入口函数 { printk("Hello world!\n"); return 0; } static void __exit lkm_exit(void) // 出口函数 { printk("Goodbye\n"); } module_init(lkm_init); // 指定一下入口点 module_exit(lkm_exit); // 声明许可证 MODULE_LICENSE("GPL");
Makefile
obj-m:=helloworld.o CURRENT_PATH:=$(shell pwd) LINUX_KERNEL:=$(shell uname -r) LINUX_KERNEL_PATH:=/usr/src/linux-zen # 需要根据自己的需要,进行修改 all: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules clean: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean
加载测试
加载
sudo insmod helloworld.ko
查看加载结果
sudo lsmod | grep helloworld helloworld 12288 0
查看内核日志
sudo dmesg | grep ello [ 237.298841] helloworld: loading out-of-tree module taints kernel. [ 237.298843] helloworld: module verification failed: signature and/or required key missing - tainting kernel [ 237.299466] Hello world!
删除
sudo rmmod helloworld sudo lsmod | grep helloworld sudo dmesg [ 969.537110] Goodbye
欢迎加入“喵星计算机技术研究院”,原创技术文章第一时间推送。
- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2023/07/05/Hands-on-practice---insertion-and-deletion-of-kernel-modules
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章