Linux源码阅读笔记19-插入删除模块实战

简介: Linux源码阅读笔记19-插入删除模块实战

前面已经讲了Linux模块的基本知识,现在我们来熟悉一下模块相关的基本操作。

模块的编写

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
// 插入内核时的函数
static int __init lnm_init(void) {
    printk("hello world kernel.\n");
    return 0;
}
// 退出内核的函数
static void __exit lnm_exit(void) {
    printk("Goodbye kernel.\n");
}
// 将模块插入内核
module_init(lnm_init);
module_exit(lnm_exit);
MODULE_LICENSE("GPL");

上面就是一个最简单的内核模块,当插入的时候会打印hello world kernel.退出内核时会打印Goobye kernel.。现在我们需要为他编写Makefile。

obj-m:=vm.o
# 当前目录
CURRENT_PATH:=$(shell pwd)
# linux内核版本
LINUX_KERNEL:=$(shell uname -r)
# linux内核头文件目录
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

编译 插入 查看 删除

编译

make

直接运行make即可,结果如下:

插入

sudo insmod [xxx.ko]

查看

  • 第一是如何查看内核日志
dmesg

由于我们刚刚插入了一个模块,所以看到了最下面插入时打印的消息。

  • 第二是查看内核已经加载的模块
lsmod

这里可以看到所有已经被插入的模块。

删除

运行:

sudo rmmod xxx

即可将模块从内核中移除,移除后可以运行dmesg查看日志,查看效果如下:

相关文章
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
5713 77
|
关系型数据库 MySQL 应用服务中间件
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
1063 23
|
监控 Linux Shell
30 个实用的 Linux 命令贴与技巧,提升你的效率(附实战案例)
本文介绍了30个实用的Linux命令及其应用场景,帮助你提升命令行操作效率。涵盖返回目录、重新执行命令、查看磁盘使用情况、查找文件、进程管理、网络状态监控、定时任务设置等功能,适合各水平的Linux用户学习和参考。
1291 15
|
Linux 文件存储 数据安全/隐私保护
Linux用户组管理实战:创建、管理与删除的全面指南
在 Linux 系统中,用户组管理是实现权限控制和资源共享的关键。本文档详细介绍如何创建用户组、管理用户组成员及查看与删除用户组。首先,通过 `groupadd` 命令创建新用户组,并在 `/etc/group` 文件中记录。接着,利用 `usermod` 和 `gpasswd` 命令来添加或删除用户组成员,其中 `gpasswd` 提供更灵活的管理方式。最后,使用 `getent` 或直接读取 `/etc/group` 查看用户组信息,并通过 `groupdel` 删除空用户组。这些操作有助于高效管理和保护系统资源。
1026 4
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
Web App开发 Linux 程序员
|
9月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
1522 2