Linxu内核模块开发入门(金荣的第一篇个人技术博客)

前言

第一次使用Markdown语法编辑的第一篇优快云技术文章,内容为本人第一个内核模块的入门教程,如有不完善的地方,请大家多多批评指正,支持开放、自由、分享,谢谢大家。


1、简单的Linux内核模块编写和说明

以下是一段简单的Linux内核模块代码

//必要的头文件
#include<linux/init.h>
#include<linux/module.h>
#include<linux/kernel.h>
MODULE_LICENSE("GPL");//许可证

//模块的初始化函数,模块的入口函数,加载模块,需超级用户
static int __init first_init(void)
{
	printk("my first kernel program!\n");
	return 0;
}

//出口函数,卸载模块
static void __exit first_exit(void)
{
	printk("end!\n");
}

module_init(first_init);//内核入口点,调用初始化函数,包含在module.h中
module_exit(first_exit);//出口点

2、编写Makefile

Makefile可以告诉编译程序的头文件在哪(本格式是在Ubuntu下),代码如下

#产生目标文件
obj-m:=hello.o
#路径变量,指明当前路径
CURRENT_PATH:=$(shell pwd)
#指明内核版本号
LINUX_KERNEL:=$(shell uname -r)
#指明内核源码的绝对路径
LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL)
#编译模块
all:
	make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
#清理模块
clean:
	make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

3、内核的加载和卸载

若内核.c文件和Makefile文件编写正确,即可在当前目录下使用make命令编译,生成如下文件
make生成文件

  • 模块加载命令:

sudo insmod hello.ko

  • 模块删除命令:

sudo rmmod hello

4、查看结果

使用dmesg命令查看系统日志打印信息
结果显示如下图
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值