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)

大家都在看

  • 小程序字节转GBK及UTF8

    前段时间在Android原生搞的BLE扫码枪又要移植到小程序上来。本以为小程序不支持BLE的,结果一搜,还真支持-_-|| 。 蓝牙部分问题不大,遇到的主要问题是, 小程序环境如何…

    Linux 2023年6月13日
    0176
  • shell编程学习

    在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。 ! 告诉系…

    Linux 2023年5月28日
    085
  • prometheus监控

    介绍 Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。该项目的开发人员和用户社区非常…

    Linux 2023年6月6日
    093
  • Centos8.x yum 源配置 解决 yum 不可用

    [root@iZ2ze1e3u7m7oe426pyndaa ~]# cd /etc/yum.repos.d/ [root@iZ2ze1e3u7m7oe426pyndaa yum.r…

    Linux 2023年6月7日
    0116
  • jmeter学习记录–05–Beanshell2

    学习beanshell时有不少的例子、遇到不少问题。在此记录下。 测试实例列表 A1:使用Beanshell请求作为测试请求 一个打包的Jar包,直接对其内的方法进行测试。 第一步…

    Linux 2023年5月28日
    098
  • 【设计模式】Java设计模式-模板模式

    Java设计模式 – 模板模式 😄 不断学习才是王道🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆原创作品,更多关注我CSDN: 一个有梦有戏的人…

    Linux 2023年6月6日
    0139
  • Ubuntu系统中防火墙的使用和开放端口

    sudo sudo apt-get install ufw sudo ufw status inactive: 不活跃,未开启 active:开启 sudo ufw enable …

    Linux 2023年5月27日
    076
  • 不自由的自由职业

    大家好,我是良许,前码农,现在自由职业者。 有关注我朋友圈的小伙伴都知道,就在上周,我刚刚结束了长达 35 天的「假期」。 此言一出,立刻掀起了评论区留言狂潮,大家纷纷问我,你特么…

    Linux 2023年6月14日
    078
  • Redis Cluster 介绍与使用

    Redis Cluster 功能特性 Redis 集群是分布式的redis 实现,具有以下特性: 1. 高可用性与可线性扩张到1000个节点 2. 数据自动路由到多个节点 3. 节…

    Linux 2023年5月28日
    096
  • RPA微信机器人汇总

    bash;gutter:true; 一、微信广告PDF对账单数据提取机器人 【机器人详情】 微信广告对账结算单为PDF文件,从每一期对账单文件中提取结算数据,统计成excel表格,…

    Linux 2023年6月7日
    0118
  • 你真的了解JAVA中对象和类、this、super和static关键字吗

    作者:小牛呼噜噜 | https://xiaoniuhululu.com计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 Java对象究竟是什么? 创建…

    Linux 2023年6月6日
    0100
  • MySQL — 数据查询语言

    DQL 全称 Data Query Language。数据查询语言,用来查询数据库中表的记录。 语法: select 查询列表(字段、常量、函数、表达式) from 表名; 字段别…

    Linux 2023年6月8日
    080
  • [转]Redis cluster failover

    今天测试了redis cluster failover 功能,在切换过程中很快,但在failover时有force 与takeover 之分 [RHZYTEST_10:REDIS:…

    Linux 2023年5月28日
    080
  • Redis未授权+CVE-2019-0708组合拳利用

    0x01 简介 本次测试为实战测试,测试环境是授权项目中的一部分,敏感信息内容已做打码处理,仅供讨论学习。请大家测试的时候,务必取得授权。 拿到授权项目的时候,客户只给我了一个公司…

    Linux 2023年5月28日
    084
  • Linux系统僵尸进程详解

    大安好,我是良许。 本文我们将来讨论一下什么是僵尸进程,僵尸进程是怎么产生的,如何杀死一个僵尸进程。 Linux中的进程是什么? 讲到进程,我们要先了解一下另一个概念: &…

    Linux 2023年6月14日
    0145
  • Linux 查看端口被占用

    端口被占用网上很多,这种频繁操作的命令容易忘记,写这边文章的目的主要是加深操作命令的印象, Liux 查看端口占用情况可以使用 lsof 和 netstat 命令。 lsof ls…

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