📜  Linux 内核模块编程:Hello World 程序(1)

📅  最后修改于: 2023-12-03 15:17:22.653000             🧑  作者: Mango

Linux 内核模块编程:Hello World 程序

简介

Linux 内核是一个开源的 Unix-like 操作系统内核,其设计目标是便携性、性能和多用户支持。内核模块编程是指在 Linux 系统中开发实现内核模块,从而为系统添加新的功能或修改系统行为。本文将介绍如何使用内核模块编程创建一个简单的 “Hello World” 程序。

准备工作

在开始编写内核模块之前,需要安装以下工具和软件:

  • Linux 内核源码
  • GCC 编译器
  • GNU Make 工具

安装完成后,可以开始编写内核模块。

编写内核模块

首先,创建一个新的文件夹用于存储内核模块的源码文件:

mkdir helloworld
cd helloworld

在文件夹中创建一个名为 helloworld.c 的源码文件,并在其中添加以下代码:

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

MODULE_LICENSE("Dual BSD/GPL");

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

static void __exit helloworld_exit(void)
{
    printk(KERN_ALERT "Goodbye, world!\n");
}

module_init(helloworld_init);
module_exit(helloworld_exit);

接下来,创建一个名为 Makefile 的文件,并在其中添加以下代码:

obj-m += helloworld.o

all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

以上 Makefile 文件用于编译内核模块。

编译内核模块

使用以下命令编译内核模块:

make

编译成功后,将生成 helloworld.ko 文件。

加载内核模块

要加载内核模块,使用以下命令:

sudo insmod helloworld.ko

如果加载成功,将会看到输出:"Hello, world!"。

卸载模块

要卸载内核模块,使用以下命令:

sudo rmmod helloworld

如果卸载成功,将会看到输出:"Goodbye, world!"。

结论

内核模块编程是一个常用的 Linux 操作系统扩展技术,可以实现各种功能和修改系统行为。在本文中,我们使用内核模块编程创建了一个简单的 “Hello World” 程序,并学习了如何编译、加载和卸载内核模块。