当前位置: 首页 > news >正文

[OS] 3.Insert and Remove Kernel Module

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.lryc.cn/news/454753.html

相关文章:

  • updatedb命令:更新locate数据库
  • 分布式共识算法ZAB
  • 程序化交易与非程序化交易者盈利能力孰优孰劣
  • 【JavaEE】【多线程】进程与线程的概念
  • LeetCode hot100---贪心算法专题(C++语言)
  • 《PyTorch深度学习快速入门教程》学习笔记(第15周)
  • kubeadm部署k8s1.28.0主从集群(cri-dockerd)
  • C语言复习概要(四)
  • 【楚怡杯】职业院校技能大赛 “Python程序开发”数据清洗练习
  • 重学SpringBoot3-集成Redis(五)之布隆过滤器
  • BGP路由原理详解
  • Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型)
  • AI股市预测的可参考价值有几何?
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第02套
  • 2. 将GitHub上的开源项目导入(clone)到(Linux)服务器上——深度学习·科研实践·从0到1
  • 毕业设计项目——基于transformer的中文医疗领域命名实体识别(论文/代码)
  • 电子信息类专业技术学习及比赛路线总结(大一到大三)
  • 怎么将bash(sh)的所有输出保存到log/txt中?
  • 腾讯云服务器上使用Nginx部署的静态网站打开速度慢的原因分析及优化解决方案
  • 如何移除 iPhone 上的网络锁?本文筛选了一些适合您的工具
  • 深度学习:CycleGAN图像风格迁移转换
  • pytorch和yolo区别
  • 使用树莓派搭建音乐服务器
  • 单链表的分解
  • [OS] 4.Linux 内核
  • flutter_鸿蒙next_Dart基础③函数
  • 基于猎豹优化算法(The Cheetah Optimizer,CO)的多无人机协同三维路径规划(提供MATLAB代码)
  • Linux:进程的创建、终止和等待
  • 数值优化基础——基于优化的规划算法
  • 括号匹配——(栈实现)