【Linux】内核模版加载modprobe | lsmod

modprobe   

   modprobe 是一个用于加载和卸载 Linux 内核模块的命令。它不仅能够加载单个模块,还能处理模块之间的依赖关系,确保所有依赖的模块都被正确加载。以下是一些关于 modprobe 命令的基本用法和常见选项的详细介绍。

基本语法

modprobe [options] [module] [module parameters...]

常用选项

  1. 加载模块

    • modprobe module_name:加载指定的模块。
    • modprobe -a module1 module2:加载多个模块。
  2. 卸载模块

    • modprobe -r module_name:卸载指定的模块。
    • modprobe -r -a module1 module2:卸载多个模块。
  3. 显示模块信息

    • modprobe -d module_name:显示模块的详细信息。
    • modprobe --show-depends module_name:显示模块的依赖关系。
  4. 检查模块是否存在

    • modprobe --dump-modversions module_name:显示模块的版本信息。
    • modprobe --show module_name:显示模块的路径。
  5. 处理模块参数

    • modprobe module_name param1=value1 param2=value2:加载模块并传递参数。
  6. 忽略依赖关系

    • modprobe --ignore-install module_name:加载模块时忽略安装脚本。
    • modprobe --ignore-remove module_name:卸载模块时忽略卸载脚本。
  7. 其他选项

    • modprobe --verbose:显示详细信息。
    • modprobe --dry-run:模拟操作,不实际加载或卸载模块。
    • modprobe --first-time:仅在第一次加载时执行。
示例
1. 加载模块

加载 br_netfilter 模块:

sudo modprobe br_netfilter
2. 卸载模块

卸载 br_netfilter 模块:

sudo modprobe -r br_netfilter
3. 加载多个模块

加载 br_netfilterip_tables 模块:

sudo modprobe -a br_netfilter ip_tables
4. 显示模块的依赖关系

显示 br_netfilter 模块的依赖关系:

sudo modprobe --show-depends br_netfilter
5. 传递模块参数

加载 ipv6 模块并禁用 IPv6:

sudo modprobe ipv6 disable=1
6. 模拟操作

模拟加载 br_netfilter 模块:

sudo modprobe --dry-run br_netfilter
7. 显示详细信息

显示 br_netfilter 模块的详细信息:

sudo modprobe -d br_netfilter

常见用途

  1. 网络模块:加载网络相关的模块,如 br_netfilter 用于桥接网络。
  2. 文件系统模块:加载文件系统相关的模块,如 ext4 用于支持 ext4 文件系统。
  3. 硬件驱动模块:加载硬件驱动模块,如 i915 用于支持 Intel 图形卡。
  4. 安全模块:加载安全相关的模块,如 apparmor 用于支持 AppArmor 安全框架。

验证模块是否已加载

使用 lsmod 命令验证模块是否已加载:

lsmod | grep br_netfilter

总结

modprobe 是一个强大的工具,用于管理和操作 Linux 内核模块。通过使用 modprobe,您可以轻松地加载、卸载和管理模块,确保系统在需要时能够正确加载所需的模块

lsmod

      是一个用于列出当前已加载的 Linux 内核模块的命令。它从 /proc/modules 文件中读取信息,并以易读的格式显示出来。lsmod 命令可以帮助您了解系统中当前加载了哪些模块,以及这些模块的依赖关系。

基本语法

lsmod

输出格式

lsmod 命令的输出通常包含以下几列:

  1. Module:模块的名称。
  2. Size:模块的大小(以字节为单位)。
  3. Used by:模块被使用的次数或依赖该模块的其他模块的名称。
示例
1. 列出所有已加载的模块
lsmod

输出示例:

Module                  Size  Used by
br_netfilter           22272  0
bridge                162304  1 br_netfilter
nf_log_ipv6            16384  0
nf_log_ipv4            16384  0
nf_log_common          16384  2 nf_log_ipv6,nf_log_ipv4
ipt_MASQUERADE         16384  1
nf_conntrack           86016  3 nf_log_ipv6,nf_log_ipv4,ipt_MASQUERADE
nf_defrag_ipv6         16384  1 nf_conntrack
nf_defrag_ipv4         16384  1 nf_conntrack
ip6table_filter        16384  1
ip6_tables             28672  1 ip6table_filter
iptable_filter         16384  1
ip_tables              32768  1 iptable_filter
x_tables               45056  7 ip6table_filter,ip6_tables,iptable_filter,ip_tables,ipt_MASQUERADE,nf_log_ipv6,nf_log_ipv4
2. 搜索特定模块

如果您只想查找特定模块的信息,可以使用 grep 命令结合 lsmod

lsmod | grep br_netfilter

输出示例:

br_netfilter           22272  0
3. 详细信息

虽然 lsmod 本身不提供详细信息,但您可以结合其他命令来获取更多信息。例如,使用 modinfo 命令查看模块的详细信息:

modinfo br_netfilter

输出示例:

filename:       /lib/modules/5.10.0-8-amd64/kernel/net/bridge/netfilter/br_netfilter.ko
license:        GPL
description:    Bridge netfilter support
author:         Stephen Hemminger <shemminger@linux-foundation.org>
srcversion:     7A3D7B7D7D7D7D7D7D7D7D7D7
depends:        bridge
retpoline:      Y
intree:         Y
name:           br_netfilter
vermagic:       5.10.0-8-amd64 SMP mod_unload modversions

常见用途

  1. 网络模块:检查网络相关的模块是否已加载,如 br_netfilter 用于桥接网络。
  2. 文件系统模块:检查文件系统相关的模块是否已加载,如 ext4 用于支持 ext4 文件系统。
  3. 硬件驱动模块:检查硬件驱动模块是否已加载,如 i915 用于支持 Intel 图形卡。
  4. 安全模块:检查安全相关的模块是否已加载,如 apparmor 用于支持 AppArmor 安全框架。

结合其他命令

  1. 查看模块路径

    modinfo -F filename br_netfilter
  2. 查看模块参数

    modinfo -p br_netfilter
  3. 查看模块依赖关系

    modprobe --show-depends br_netfilter

总结

lsmod 命令是一个简单但强大的工具,用于列出当前已加载的 Linux 内核模块。通过使用 lsmod,您可以快速了解系统中加载了哪些模块,以及这些模块的依赖关系

模块加载的相关文件

/etc/sysconfig/modules//etc/modules-load.d/ 目录都用于配置内核模块的自动加载,但它们的工作方式和应用场景有所不同。下面详细解释这两个目录的区别和各自的使用场景。

1. /etc/modules-load.d/ 目录

作用
  • 系统启动时加载模块/etc/modules-load.d/ 目录中的文件用于指定在系统启动时需要自动加载的内核模块。
  • 由 systemd 管理:这些文件由 systemd 的 systemd-modules-load.service 服务读取并加载指定的模块。
文件格式
  • 每个文件通常以 .conf 为扩展名。
  • 文件内容是一行或多行,每行指定一个内核模块的名称。
示例

假设您需要在系统启动时自动加载 br_netfilterip_tables 模块,可以在 /etc/modules-load.d/ 目录中创建一个配置文件,例如 network-modules.conf

sudo nano /etc/modules-load.d/network-modules.conf

编辑文件内容:

br_netfilter
ip_tables

保存并退出编辑器。

加载模块
  • 系统启动时,systemd-modules-load.service 会自动读取并加载这些模块。
  • 您也可以手动加载这些模块:
sudo systemctl start systemd-modules-load.service

2. /etc/sysconfig/modules/ 目录

作用
  • 自定义模块加载脚本/etc/sysconfig/modules/ 目录中的文件是可执行的 Shell 脚本,用于在系统启动时加载内核模块。 

       如实例:

cat > /etc/sysconfig/modules/ipvs.sh <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

  • 灵活性更高:这些脚本可以包含更复杂的逻辑,例如条件加载模块、设置模块参数等。
文件格式
  • 每个文件通常以 .sh 为扩展名。
  • 文件内容是 Shell 脚本,使用 modprobe 命令加载模块。
示例

假设您需要在系统启动时自动加载 br_netfilter 模块,并设置其参数,可以在 /etc/sysconfig/modules/ 目录中创建一个脚本文件,例如 br_netfilter.sh

sudo nano /etc/sysconfig/modules/br_netfilter.sh

编辑文件内容:

#!/bin/sh
modprobe br_netfilter

保存并退出编辑器。

使脚本可执行

确保脚本文件具有可执行权限:

sudo chmod +x /etc/sysconfig/modules/br_netfilter.sh
加载模块
  • 系统启动时,这些脚本会自动执行,加载指定的模块。
  • 您也可以手动执行这些脚本:
sudo /etc/sysconfig/modules/br_netfilter.sh

主要区别

  1. 管理方式

    • /etc/modules-load.d/ 由 systemd 管理,更加现代化和标准化。
    • /etc/sysconfig/modules/ 由传统的初始化系统(如 init 或 systemd 的兼容层)管理,更加灵活但复杂度更高。
  2. 文件格式

    • /etc/modules-load.d/ 文件是简单的文本文件,每行指定一个模块名称。
    • /etc/sysconfig/modules/ 文件是可执行的 Shell 脚本,可以包含复杂的逻辑。
  3. 应用场景

    • /etc/modules-load.d/ 适合简单的模块加载需求,易于管理和维护。
    • /etc/sysconfig/modules/ 适合需要更复杂逻辑的模块加载,例如条件加载模块或设置模块参数。

总结

  • /etc/modules-load.d/:现代、标准化,适合简单的模块加载需求。
  • /etc/sysconfig/modules/:传统、灵活,适合需要复杂逻辑的模块加载需求。

选择哪个目录取决于您的具体需求和系统配置。如果您只需要简单的模块加载,推荐使用 /etc/modules-load.d/。如果您需要更复杂的逻辑,可以使用 /etc/sysconfig/modules/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS8 启动错误,enter emergency mode ,开机直接进入紧急救援模式,报错 Failed to mount /home 解决方法

先看现场问题截图&#xff1a; 1.根据提示 按 ctrld 输入 root 密码&#xff0c;进入系统。 2. 在紧急模式下运行&#xff1a;journalctl -xe &#xff0c;查看相关日志&#xff0c;找到关键点&#xff1a; Failed to mount /home 3.接着执行修复命令&#xff1a; xfs_repa…

Java项目实战II基于微信小程序的课堂助手(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在数字化教…

借助 Pause 容器调试 Pod

借助 Pause 容器调试 Pod 在 K8S 中&#xff0c;Pod 是最核心、最基础的资源对象&#xff0c;也是 Kubernetes 中调度最小单元。在介绍 Pause 容器之前需要先说明下 Pod 与容器的关系来理解为什么需要 Pause 容器来帮助调试 1. Pod 与 容器的关系 Pod 是一个抽象的逻辑概念&…

IDEA自定义文件打开格式

介绍在IDEA中自定义文件打开格式的方法&#xff0c;比如一个文件&#xff0c;可以选择用txt格式打开&#xff0c;也可以选择用xml格式打开&#xff0c;也可以用java格式打开等等&#xff0c;通过这个方法可以方便的用任意格式在idea中打开想要打开的文件。 下面分别讨论三种不…

Git 分⽀规范 Git Flow 模型

前言 GitFlow 是一种流行的 Git 分支管理策略&#xff0c;由 Vincent Driessen 在 2010 年提出。它提供了一种结构化的方法来管理项目的开发、发布和维护&#xff0c;特别适合大型和复杂的项目。GitFlow 定义了一套明确的分支模型和工作流程&#xff0c;使得团队成员可以更有效…

ECG心电前级信号提取

由于ECG信号很微弱&#xff0c;处于mV级别&#xff0c;还有很多干扰信号&#xff0c;所以采集信号时需要进行滤波和放大处理&#xff0c;然后使用模数转换。为了滤波高频干扰和工频噪声&#xff0c;需要使用低通滤波器和陷波器抑制噪声&#xff0c;有时也要使用高通滤波器滤除低…

【Android】逆向开发与反逆向开发入门知识(一)

目录 逆向开发反编译 & 反混淆反编译工具反编译反混淆 修改预置资源文件抓包前期准备二次打包重签名 如何预防 App 被逆向开发&#xff1f;代码混淆应用加固防止动态调试Root 检测二次打包检测 警告&#xff1a;逆向开发相关知识请在法律规定范围内使用&#xff0c;请勿使用…

华为Mate 70临近上市:代理IP与抢购攻略

随着科技的飞速发展&#xff0c;智能手机已经成为我们日常生活中不可或缺的一部分。而在众多智能手机品牌中&#xff0c;华为一直以其卓越的技术和创新力引领着行业的发展。近日&#xff0c;华为Mate 70系列手机的发布会正式定档在11月26日&#xff0c;这一消息引发了众多科技爱…

【Linux之权限】理论篇

前言 Linux的权限是我们学习Linux初期非常重要的基础知识&#xff0c;接下来我将通过一个系列【Linux之权限】&#xff0c;共三篇文章&#xff0c;对此进行较为全面和详细的解说。 sudo 情况&#xff1a;如果我们不是超级管理员&#xff0c;但是想执行一个权限级别比较高的指…

[C++] 智能指针

文章目录 智能指针的使用原因及场景分析为什么需要智能指针&#xff1f;异常抛出导致的资源泄漏问题分析 智能指针与RAIIC常用智能指针 使用智能指针优化代码优化后的代码优化点分析 析构函数中的异常问题解决方法 RAII 和智能指针的设计思路详解什么是 RAII&#xff1f;RAII 的…

spark性能优化调优指导性文件

1.让我们看一下前面的核心参数设置&#xff1a; num-executors10||20&#xff0c;executor-cores1||2&#xff0c;executor-memory10||20&#xff0c;driver-memory20&#xff0c;spark.default.parallelism64 假设我们的火花队列资源如下&#xff1a; 内存1T&#xff0c;内…

视频流媒体播放器EasyPlayer.js RTSP播放器视频颜色变灰色/渲染发绿的原因分析

EasyPlayer.js RTSP播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;无须安装任何插件&#xff0c;起播快、延迟低、兼容性强&#xff0c;使用非常便捷。 EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式&#xff0…

零售项目管理的核心问题:如何让协作更高效?

在零售行业&#xff0c;团队协作的效率直接影响到市场反应速度和客户满意度。商品的上下架、库存管理、促销活动的策划与执行、跨部门的沟通与协作……每一个环节都需要精准的协调。而在这些纷繁复杂的任务中&#xff0c;项目管理软件正成为零售行业的关键工具&#xff0c;帮助…

用appinventor制作艾宾浩斯遗忘曲线app

&#xff08;呕心沥血 仅供参考&#xff09; 测试效果演示 用appinventor制作课本记背应用程序&#xff08;基于遗忘曲线设计&#xff09; 目录 效果演示 项目重难点 总体设计 系统功能模块设计 总体结构如下图所示&#xff1a; 功能模块 详细设计与实现 登录界面 界…

【设计模式】行为型模式(三):责任链模式、状态模式

行为型模式&#xff08;三&#xff09;&#xff1a;责任链模式、状态模式 5.责任链模式&#xff08;Chain of Responsibility&#xff09;5.1 通俗易懂的解释5.2 具体步骤5.3 代码示例5.3.1 处理者接口5.3.2 具体处理者5.3.3 测试类5.3.4 输出 5.4 总结 6.状态模式&#xff08;…

CC3学习记录

&#x1f338; CC3 之前学习到的cc1和cc6都是通过Runtime进行命令执行的&#xff0c;如果Runtime被加入黑名单的话&#xff0c;整个链子也就失效了。而cc3则是通过动态类加载机制进行任意代码执行的。 &#x1f338; 版本限制 JDK版本&#xff1a;8u65 Commons-Collections…

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…

设计模式(四)装饰器模式与命令模式

一、装饰器模式 1、意图 动态增加功能&#xff0c;相比于继承更加灵活 2、类图 Component(VisualComponent)&#xff1a;定义一个对象接口&#xff0c;可以给这些对象动态地添加职责。ConcreteComponent(TextView)&#xff1a;定义一个对象&#xff0c;可以给这个对象添加一…

django入门【05】模型介绍(二)——字段选项

文章目录 1、null 和 blank示例说明⭐ null 和 blank 结合使用的几种情况总结&#xff1a; 2、choices**choices 在 Django 中有以下几种形式&#xff1a;**&#xff08;1&#xff09; **简单的列表或元组形式**&#xff08;2&#xff09; **字典映射形式**&#xff08;3&#…

C++清除所有输出【DEV-C++】所有编辑器通用 | 算法基础NO.1

各位小伙伴们&#xff0c;上一期的保留小数位数教学够用一辈子&#xff0c;有不错的点赞量&#xff0c;可我连一个粉丝铁粉都没有&#xff0c;你愿意做我的第一个铁粉吗&#xff1f;OK废话不多说&#xff0c;开始&#xff01; 温故与知心 可能你也学过&#xff0c;且是工作者…