简单的内核模块编译、加载

写一个比较简单的内核模块(打印出“hello world”),实现内核模块的编译/装载与卸载,代码如下:

hello.c

#include "linux/init.h"
#include "linux/kernel.h"
#include "linux/module.h"  //3个头文件包含了内核提供的所有内核模块的头文件

static int __init hello_init(void) {
        printk(KERN_ALERT "Hello world!\n");
        return 0;
}

static void __exit hello_exit(void) {
        printk(KERN_ALERT "Goodbye!\n");
}

module_init(hello_init);  //告诉内核当内核模块第一次运行时哪个函数将被执行
module_exit(hello_exit); //内核模块被卸载时被执行的函数
MODULE_LICENSE("GPL");  //开源license
MODULE_DESCRIPTION("hello"); //文件描述

Makefile:

obj -m :=hello.o
#内核源代码位置,这里是标准情况下链接到正在使用的内核
KERNELBUILD :=/lib/modules/$(shell uname -r)/build 
default: 
    #编译连接目标
    make -C $(KERNELBUILD) M=$(shell pwd) modules 
   #以下内容不是必须 ,属于执行和清理部分
    echo insmod ./hello.ko to turn it on 
clean:
    rm -rf *.o *.ko *.mod.c .*.cmd *.markers *.order *.symvers .tmp_versions



执行:

make //生成内核模块 ko文件

sudo insmod ./hello.ko 

//装在内核模块dmesg | tail 

//查看输出信息  

sudo rmmod  hello //卸载内核模块

dmesg | tail //查看输出信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值