Linux module实现方法

linux中可以以module的形式向linux 内核注入模块,本文举例说明实现的具体方法:

经典的HelloWorld

/*
	helloworld.c Kernel module practice.
*/

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

static int __init hello_init(void)
{
	printk(KERN_ALERT "I bear a charmed life. \n");
	return 0;
}

static void __exit hello_exit(void)
{
	printk(KERN_ALERT "Out,out,brief candle! \n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("CHENQIANG");
MODULE_DESCRIPTION("A Hello World linux module test.");

Makefile

MODULE_NAME := helloworld
obj-m := $(MODULE_NAME).o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

all:
 @echo "MAKEFLAGS: $(MAKEFLAGS)"
 @echo "Makefile target: $(MAKECMDGOALS)"
 @echo "CFLAGS: $(CFLAGS)"
 $(MAKE) -C $(KERNELDIR) M=$(PWD)

clean:
 rm all *.o
意思就是首先将make 的工作目录切换到KERNELDIR,然后执行make,M指定了module 所在的路径。

编译完成后生成hello.ko

在具有root权限的linux服务器上,输入insmod hello.ko,lsmod就能看到hello.ko了。

输入dmesg|tail 就能看到printk 的kernel log:I bear a charmed life.

rmmod hello.ko 就可以移除hello.ko模块了。

modinfo module_name 查看指定的module 相关信息, modprobe module_name 查找插入指定的module.

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值