[OS] 3.Insert and Remove Kernel Module

embedded/2024/10/18 18:15:14/

Insert and Remove Kernel Module

1. 切换到 root 账户

$ sudo su

作用:Linux 内核模块的加载和卸载需要超级用户权限,因此你必须以 root 用户身份进行操作。sudo su 命令允许你从普通用户切换到 root 账户,从而获得系统的最高权限,能够进行内核模块的操作。

这是关于如何管理 Linux 内核模块的具体步骤说明。让我们逐步解释一下每个命令的作用,以及它们如何操作内核模块。

1. 切换到 root 账户

 

bash

复制代码

$ sudo su

  • 作用:Linux 内核模块的加载和卸载需要超级用户权限,因此你必须以 root 用户身份进行操作。sudo su 命令允许你从普通用户切换到 root 账户,从而获得系统的最高权限,能够进行内核模块的操作。

2. 插入内核模块

$ insmod MODULE_NAME.ko

  • 作用insmod 命令用于将内核模块插入(加载)到正在运行的 Linux 内核中。你需要指定你要加载的模块文件名称,通常是一个以 .ko 结尾的文件。

  • 示例

    insmod my_module.ko

    这会加载名为 my_module.ko 的内核模块到内核中,开始执行模块的初始化函数(通常是 module_init())。

  • 注意:加载模块时,内核会调用该模块的初始化函数,开始运行模块中的代码逻辑。如果初始化失败,会显示错误信息,模块不会加载成功。

3. 列出已加载的内核模块

$ lsmod

  • 作用lsmod 命令用于列出当前系统中所有已加载的内核模块。输出会包括模块名、使用模块的进程数、模块占用的内存大小等信息。

$ lsmod | grep MODULE_NAME

  • 作用:使用 grep 命令来过滤 lsmod 的输出,显示指定的模块是否成功加载。这非常有用,可以快速确认你的模块是否已经成功插入到内核中。

  • 示例

    lsmod | grep my_module

    这会检查内核中是否已经加载了名为 my_module 的模块。

4. 卸载内核模块

$ rmmod MODULE_NAME

  • 作用rmmod 命令用于从内核中卸载一个已经加载的模块。卸载时,内核会调用该模块的退出函数(module_exit()),并释放所有模块占用的资源。

  • 示例

    rmmod my_module

    这会卸载名为 my_module 的模块。

  • 注意:模块的卸载也需要 root 权限。如果模块被某个进程占用或模块未成功加载,rmmod 命令可能会失败。

模块管理的整体流程

  1. 切换到 root 账户sudo su 切换到 root 用户以获得加载和卸载内核模块的权限。
  2. 加载模块insmod MODULE_NAME.ko 插入并加载指定的内核模块。
  3. 检查模块:通过 lsmodlsmod | grep MODULE_NAME 命令,确认模块是否成功加载到内核中。
  4. 卸载模块rmmod MODULE_NAME 用于卸载模块,当不再需要该模块时确保清理内核。

例子流程

假设我们有一个模块文件 my_module.ko

# 1. 切换到 root 用户 $ sudo su

# 2. 加载模块 $ insmod my_module.ko

# 3. 列出所有模块,确认加载成功 $ lsmod

# 4. 通过 grep 筛选,检查是否成功加载 my_module $ lsmod | grep my_module

# 5. 卸载模块 $ rmmod my_module


http://www.ppmy.cn/embedded/124208.html

相关文章

C语言+电焊

啊啊啊&#xff0c;今天又是快乐的一天&#xff01;祝大家节日快乐 C语言 今天也是把丢失的C语言拾起来了&#xff0c;做了一下习题回顾 3.偶数和&#xff08;for循环if条件&#xff09; 注意for/if一类的判断语句后面添加分号会自动忽略语句 for(int i1;i<22;i); {if(i…

【Python】Python知识总结浅析

Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年首次发布。它以简洁的语法和强大的功能著称&#xff0c;适用于多种应用场景&#xff0c;包括Web开发、数据分析、人工智能、自动化脚本等。 易于学习和使用&#xff1a;Python的语法简洁明了&#xff0c;适合初…

zy91_C#中StringBuilder类以及char类

文章目录 1.StringBuilder类1.1程序代码 2.char类2.1程序代码 1.StringBuilder类 1.1程序代码 static void Main(string[] args) {//1.StringBuilder bf1 new StringBuilder();StringBuilder bf2 new StringBuilder(10);StringBuilder bf3 new StringBuilder("Hello …

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【272-284】

272. 包基本介绍 272.1 看一个应用场景 272.2 包的三大作用 272.3 包的基本语法 273. 包原理 274. 包快速入门 在不同的包下面创建不同的Dog类 275. 包命名 276. 常用的包 一个包下,包含很多的类,java 中常用的包有: java.lang.* //lang 包是基本包&#xff0c;默认引入&…

5G NR coreset 简介

文章目录 5G 为何引入CORESETCORESET介绍CORESET 分类 5G 为何引入CORESET 在LTE系统中&#xff0c;PDCCH频域占据整个带宽&#xff0c;始于占据每个RB的前1~3个OFDM 符号&#xff0c;这种情况下&#xff0c;UE 只需知道PDCCH 所占据的OFDM 符号数&#xff0c;就可以确定PDCCH…

互联网前后端分离的开发场景,一般会员和数据权限的判断是放在前端还是后端?

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…

Stable Diffusion绘画 | 来训练属于自己的模型:素材准备篇

首先要说明的是&#xff0c;模型训练&#xff0c;需要显卡持续不间断地一致运行&#xff0c; 快则0.5-1小时左右&#xff0c;慢的话可能需要跑上几小时&#xff0c;甚至是几天&#xff0c; 原因跟显卡的配置和训练设置参数都有关系。 模型训练与显卡配置&#xff1a; 训练 L…

Python FFmpeg 安装使用教程

文章目录 什么是 FFmpeg&#xff1f;主要功能包括&#xff1a; Windows 下载安装下载解压安装配置环境变量 使用案例使用 ffmpeg-python 库转换视频格式视频剪辑添加字幕 使用 subprocess.run 执行视频格式转换 其它问题ffmpeg 不是内部或外部命令,也不是可运行的程序 个人简介…