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

【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/

相关文章:

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

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

Android从Drawable资源Id直接生成Bitmap,Kotlin

Android从Drawable资源Id直接生成Bitmap,Kotlin val t1 System.currentTimeMillis()val bmp getBmpFromDrawId(this, R.mipmap.ic_launcher_round)Log.d("fly", "1 ${bmp?.byteCount} h${bmp?.height} w${bmp?.width} cost time${System.currentTimeMillis…...

蓝桥杯——数组

1、移动数组元素 package day3;import java.util.Arrays;public class Demo1 {public static void main(String[] args) {int[] arr {1,2,3,4,5,6};int k 2;int[] arr_new f(arr,k);for (int i : arr_new) {System.out.print(i",");}//或System.out.println();St…...

在Flutter中,禁止侧滑的方法

在Flutter中&#xff0c;如果你想禁用侧滑返回功能&#xff0c;你可以使用WillPopScope小部件&#xff0c;并在onWillPop回调中返回false来阻止用户通过侧滑返回到上一个页面。 class DisableSwipePop extends StatelessWidget {overrideWidget build(BuildContext context) {…...

黑盒测试案例设计方法的使用(1)

黑盒测试用例的设计是确保软件质量的关键步骤之一。 一、等价类划分法 定义&#xff1a;把所有可能的输入数据&#xff0c;即程序的输入域划分成若干部分&#xff08;子集&#xff09;&#xff0c;然后从每一个子集中选取少数具有代表性的数据作为测试用例。 步骤&#xff1a…...

第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令

文章目录 第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令客户端OPEN命令 第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令 客户端OPEN命令 客户端OPEN命令与服务器端OPEN命令只有一个方面的不同&#xff1a;第一个设备参数必须指定要连接的主机。要指定主机&#xf…...

pycharm报错:no module named cv2.cv2

1、问题概述&#xff1f; 在项目中报错no module named cv2.cv2&#xff0c;就会导致import cv2 as cv无法使用。 需要安装opencv-python,一个开源的计算机视觉库。 2、解决办法&#xff1f; 【第一步&#xff1a;如果当前环境中已经安装&#xff0c;先卸载】 有时候会出现…...

Android音视频直播低延迟探究之:WLAN低延迟模式

Android WLAN低延迟模式 Android WLAN低延迟模式是 Android 10 引入的一种功能&#xff0c;允许对延迟敏感的应用将 Wi-Fi 配置为低延迟模式&#xff0c;以减少网络延迟&#xff0c;启动条件如下&#xff1a; Wi-Fi 已启用且设备可以访问互联网。应用已创建并获得 Wi-Fi 锁&a…...

docker 部署freeswitch(非编译方式)

一&#xff1a;安装部署 1.拉取镜像 参考&#xff1a;https://hub.docker.com/r/safarov/freeswitch docker pull safarov/freeswitch 2.启动镜像 docker run --nethost --name freeswitch \-e SOUND_RATES8000:16000 \-e SOUND_TYPESmusic:en-us-callie \-v /home/xx/f…...

OpenHarmony的公共事件

OpenHarmony的公共事件 公共事件简介 CES&#xff08;Common Event Service&#xff0c;公共事件服务&#xff09;为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为&#xff1a;系统公共事件和自定义公共事件。 系统公共事件&#…...

深度学习transformer

Transformer可是深度学习领域的一个大热门呢&#xff01;它是一个基于自注意力的序列到序列模型&#xff0c;最初由Vaswani等人在2017年提出&#xff0c;主要用于解决自然语言处理&#xff08;NLP&#xff09;领域的任务&#xff0c;比如机器翻译、文本生成这些。它厉害的地方在…...

低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络

刚搬进新租的房子&#xff0c;没有网络&#xff0c;开个热点&#xff1f;续航不太行。随身WIFI&#xff1f;大多是百兆级网络。找人拉宽带&#xff1f;太麻烦&#xff0c;退租的时候也不能带着走。5G CPE倒是个不错的选择&#xff0c;插入SIM卡就能直接连接5G网络&#xff0c;千…...

【黑马点评debug日记】redis登录跳转不成功

登录后一直跳转登录界面&#xff1b; debug: 网络日志报401&#xff0c; 说明前端获取的token为空&#xff1b; 查看应用程序&#xff0c; 发现没有token存储信息 前端网页增加 sessionStorage.setItem("token", data); 记得刷新网页 成功存储token...

C#自定义特性-SQL

语法 原则 自定义特性必须继承自System.Attribute类&#xff1b; AttributeUsage属性来指定特性的使用范围和是否允许重复等&#xff1b; 在特性类中定义属性&#xff0c;这些属性将用于存储特性值。 示例 using System;// 定义一个自定义特性类 [Attribute…...

协方差矩阵及其计算方法

协方差矩阵&#xff08;Covariance Matrix&#xff09;是一个描述多维数据特征之间相互关系的矩阵&#xff0c;广泛应用于统计学和机器学习中。它用于表示各个特征之间的协方差&#xff0c;是分析多维数据分布和特征依赖性的重要工具。 什么是协方差矩阵&#xff1f; 协方差矩…...

【OH】openHarmony开发环境搭建(基于windows子系统WSL)

前言 本文主要介绍基于windows子系统WSL搭建openHarmony开发环境。 WSL与Vmware虚拟机的区别&#xff0c;可以查看WSL与虚拟机的区别 更详细的安装配置过程可参考微软官网&#xff1a; ​安装 WSL 前提 以下基于windows 111专业版进行配置&#xff0c;windows 10应该也是可以…...

Visual Studio Code 端口转发功能详解

Visual Studio Code 端口转发功能详解 引言 Visual Studio Code&#xff08;简称 VS Code&#xff09;是一个功能强大的源代码编辑器&#xff0c;它支持多种编程语言的语法高亮、智能代码补全、自定义快捷键、代码重构等特性。除了这些基本功能外&#xff0c;VS Code 还提供了…...

Android Framework AMS(14)ContentProvider分析-1(CP组件应用及开机启动注册流程解读)

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要解读ContentProvider组件的基本知识。关注思维导图中左上侧部分即可。 有了前面activity组件分析、service组件分析、广播组件分析的基…...

Three.js PBR材质

本文将详细介绍Three.js中的PBR&#xff08;Physically Based Rendering&#xff09;材质&#xff0c;包括PBR的基本概念、适用场景、PBR材质的构建以及一些高级应用技巧。 1. PBR&#xff08;Physically Based Rendering&#xff09;基本概念 PBR&#xff0c;即Physically B…...

智谱AI清影升级:引领AI视频进入音效新时代

前几天智谱推出了新清影,该版本支持4k、60帧超高清画质、任意尺寸&#xff0c;并且自带音效的10秒视频,让ai生视频告别了"哑巴时代"。 智谱AI视频腾空出世&#xff0c;可灵遭遇强劲挑战&#xff01;究竟谁是行业翘楚&#xff1f;(附测评案例)之前智谱出世那时体验了一…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...