Linux内核模块管理(命令)

1.什么是 Linux 内核模块?

内核模块是可以根据需要加载到内核中或从内核中卸载的代码块,因此无需重启就可以扩展内核的功能。事实上,除非用户使用类似lsmod这样的命令来查询模块信息,否则用户不太可能知道内核发生的任何变化。多数情况下,模块会根据需要加载的,而且用户不需要知道它们如何运作。

(以上内容参考:https://mp.weixin.qq.com/s/s3VSDEUD_gcQ0dF-Yk7Pqw

2.与内核模块相关的命令

(1)depmod:

Linux depmod命令用于分析可载入模块的相依性。

depmod(depend module)可检测模块的相依性,生成 modules.dep 和映射文件,供modprobe在安装模块时使用。

语法:

depmod [-adeisvV ][-m

参数说明

  • -a或–all 分析所有可用的模块。
  • -d或debug 执行排错模式。
  • -e 输出无法参照的符号。
  • -i 不检查符号表的版本。
  • -m
  • -s或–system-log 在系统记录中记录错误。
  • -v或–verbose 执行时显示详细的信息。
  • -V或–version 显示版本信息。
  • –help 显示帮助。

用法如下:

Linux内核模块管理(命令)

在输入depmod -a 命令后,红框目录下会生成橙色框所示的modules.dep文件,查看这个文件可以到各个模块的依赖关系,蓝框里的内容表示冒号前面的模块依赖冒号后面的模块。

(2)insmod

Linux insmod(install module)命令用于载入模块。

Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。

语法:

insmod [-fkmpsvxX ][-o

参数说明

  • -f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。
  • -k 将模块设置为自动卸除。
  • -m 输出模块的载入信息。
  • -o
  • -p 测试模块是否能正确地载入kernel。
  • -s 将所有信息记录在系统记录文件中。
  • -v 执行时显示详细的信息。
  • -x 不要汇出模块的外部符号。
  • -X 汇出模块所有的外部符号,此为预设置。

用法如下:

输入命令 sudo insmod /lib/modules/uname -r/kernal/drivers/ata/pata_amd.ko,其中uname -r显示内核模块版本号。

Linux内核模块管理(命令)

加载成功以后可以看到如下情况:

Linux内核模块管理(命令)

使用insmod加载模块时要注意当模块依赖于另一个模块时,要确保那个模块已被加载,否则会有错误提示,可以去modules.dep文件里面查找。

(推荐使用modprobe命令,此命令会自动加载被依赖的模块,也不需要输入路径信息)

(3)lsmod

Linux lsmod命令用于显示已载入系统的模块。

执行lsmod(list modules)指令,会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。

语法:

lsmod

lsmod命令是显示内核模块最方便的命令。然而,也有其他方式可以显示它们。lsmod列出的是/proc目录下的 modules

用法如下:

(4)modinfo

Linux modinfo命令用于显示kernel模块的信息。

modinfo会显示kernel模块的对象文件,以显示该模块的相关信息。

语法:

modinfo [-adhpV ][模块文件]

参数

  • -a或–author 显示模块开发人员。
  • -d或–description 显示模块的说明。
  • -h或–help 显示modinfo的参数使用方法。
  • -p或–parameters 显示模块所支持的参数。
  • -V或–version 显示版本信息。

用法如下:

(5)modprobe

Linux modprobe命令用于自动处理可载入模块。

modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

语法:

modprobe [-acdlrtvV ][–help ][模块文件][符号名称=符号值]

参数

  • -a或–all 载入全部的模块。
  • -c或–show-conf 显示所有模块的设置信息。
  • -d或–debug 使用排错模式。
  • -l或–list 显示可用的模块。
  • -r或–remove 模块闲置不用时,即自动卸载模块。
  • -t或–type 指定模块类型。
  • -v或–verbose 执行时显示详细的信息。
  • -V或–version 显示版本信息。
  • -help 显示帮助。

用法如下:

(6)rmmod

Linux rmmod命令用于删除模块。

执行rmmod指令,可删除不需要的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放如核心。你可以将这些功能编译成一个个单独的模块,待有需要时再分别载入它们。

语法:

rmmod [-as ][模块名称…]

参数

  • -a 删除所有目前不需要的模块。
  • -s 把信息输出至syslog常驻服务,而非终端机界面。

用法如下:

rmmod只能移除目前没有被用到的模块。

更详细的内容可以参考:https://www.cnblogs.com/jacklikedogs/p/4659249.html

Original: https://www.cnblogs.com/vivianwenwen/p/12132891.html
Author: 温昀
Title: Linux内核模块管理(命令)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585259/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 每天一个 HTTP 状态码 204

    204 No Content 表示服务器成功地处理了客户端的请求,但是… 204 No Content 204 No Content 表示服务器成功地处理了客户端的请求…

    Linux 2023年6月7日
    0104
  • Java类初始化顺序小结

    第一种情况(单一类) 测试结果 静态变量 静态&…

    Linux 2023年6月7日
    0108
  • CentOS 7安装FTP服务器

    修改 vsftpd.conf配置文件,禁用匿名用户访问ftp服务器 vim /etc/vsftpd/vsftpd.conf 将配置文件中的 anonymous_enable=YES…

    Linux 2023年5月27日
    0119
  • CPU 是如何与内存交互的

    这篇文章主要整理了一下计算机中的内存结构,以及 CPU 是如何读写内存中的数据的,如何维护 CPU 缓存中的数据一致性。什么是虚拟内存,以及它存在的必要性。如有不对请多多指教。 概…

    Linux 2023年6月8日
    099
  • 性能测试—实施流程记录

    posted @2022-06-08 17:31 尼古丁·瘾 阅读(26 ) 评论() 编辑 Original: https://www.cnblogs.com/ngd-mzl/p…

    Linux 2023年6月8日
    0122
  • CKS考试心得分享

    CKS证书 考试相关 考试报名准备 CKS考试和CKA考试一样,已经开放中国大陆的考试。但区别是CKS目前没有中文题目,考试都是英文题目,唯一区别是CKS中文考试是中文老师监考,仅…

    Linux 2023年6月13日
    0115
  • MySQL注入流程

    确认注入点 信息收集 数据获取 提权 写个MySQL注入流程的大纲,类似一份全局地图,能指导下一步工作。MySQL注入流程分为四步: 确认注入点 信息收集 数据获取 提权 确认注入…

    Linux 2023年6月6日
    0127
  • jmeter接口关联-后置处理器(正则表达式)

    接口测试通过会涉及到两个接口之间的关联,前一个接口的返回数据作为到下一个接口的入参,这时候就需要用到后置处理器,其中有正则表达式提取器、XPath提取器、JSON提取器,今天先示范…

    Linux 2023年6月8日
    092
  • 【socket】在Linux下socket温度上报–客户端

    socket通信客户端 socket函数 * 代码实现 socket函数 int socket(int domain,int type,int protocol); 参数: dom…

    Linux 2023年6月13日
    0115
  • Linux下定时自动备份Docker中所有SqlServer数据库

    给出一个备份的范例 #!/bin/bash #设置mssql备份目录 folder=/var/opt/mssql/data/databack/ day=date +%Y%m%d%H…

    Linux 2023年6月14日
    0115
  • 一篇文章扒掉“桥梁Handler”的底裤

    Android跨进程要掌握的是Binder, 而同一进程中最重要的应该就是Handler 消息通信机制了。我这么说,大家不知道是否认同,如果认同,还希望能给一个关注哈。 什么是Ha…

    Linux 2023年6月13日
    0101
  • 数字图像处理

    1. 图像的基本概念 连续图像:二维坐标系上连续变化的图像,图像的像点无限稠密。 离散图像:用数字序列表示的图像,像素是组成图像的基本单位。 1.1 图像数字化采样 图像经过采样与…

    Linux 2023年6月14日
    092
  • 怎么实现Redis的高可用?(主从、哨兵、集群)

    高可用有两个含义: 一是数据尽量不丢失,二是保证服务尽可能可用。 AOF 和 RDB 数据持久化保证了数据尽量不丢失,那么多节点来保证服务尽可能提供服务。 一般在实际生产中,服务不…

    Linux 2023年5月28日
    099
  • centos 8及以上安装mysql 8.0

    本文适用于centos 8及以上安装mysql 8.0,整体耗时20分钟内,不需要FQ 1.环境先搞好 systemctl stop firewalld //关闭防火墙 syste…

    Linux 2023年6月7日
    0111
  • 系统架构的11条原则

    基本原则 原则一:价值为王 解析: 价值为王的另一种说法叫做YAGNI。YAGNI 是 You aren’t gonna need it 的缩写。该原则的基本含义就是,…

    Linux 2023年6月14日
    0124
  • 积分排名查看

    1年05个月 2018-9-17 1年04个月 2018-9-04 1年04个月 2018-8-23 1年04个月 2018-8-21 posted @2018-08-21 21:…

    Linux 2023年6月7日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球