4.1 一个简单的Linux Kernel模块

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.1 一个简单的Linux Kernel模块相关的知识,希望对你有一定的参考价值。

Linux内核包含非常多个组件,但不同的应用场景下需要打包的组件也不尽相同,更何况我们常常因为一些iot设备本身硬件资源有限,为了物尽其用要对内核组件进行裁剪。例如,对于路由器设备来说,我们再在打包Linux 内核时并不需要打包BT等驱动模块。Linux提供了一种称之为模块-Module的机制,可以让我们在编译内核的时候可以最小形式的编译必须的模块,从而控制内核大小。

一、hello_world模块示例

1.1 代码示例

在demo目录下,创建hello_world.c文件,其内容如下:

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

static int __init hello_init(void)

    printk(KERN_INFO "Hello, my world!\\n");
    return 0;


static void __exit hello_exit(void)

    printk(KERN_INFO "See you, my world!\\n");


module_init(hello_init);
module_exit(hello_exit);


MODULE_LICENSE("GPL V2");
MODULE_AUTHOR("BILL");

1.2 运行效果

 

二,Makefile示例

2.1 内核源码根目录下创建demo目录

以上是关于4.1 一个简单的Linux Kernel模块的主要内容,如果未能解决你的问题,请参考以下文章

一个简单的内核模块

Linux kernel模块管理相关详解

编写简单Linux内核模块

linux kernel 模块多文件编译

linux_kernel_uaf漏洞利用实战

Linux 内核(kernel)