/sys/module/ 模块信息 目录与/proc/modules文件

2023-11-12

    在内核模块编译中,会选择编译成模块,或者build in 内核镜像中,其中对内核模块有很好的的说明,这也是linux在嵌入式当中得到广泛应用的充分体现, 内核中有很多功能选项,其中有许多使我们不需要的,内核设计成模块的优势所在就在这里,不需要的我们不需要进行编译,在进行裁剪过后(剔除不需要的功能选项之后),编译成我们的镜像文件。其中内核模块有很多选项之间是相互依赖的,这也就是在进行内核裁剪的时候难点的所在。
    对模块在这里我要进行一定说明和解释,在系统目录中有两处包含模块的相关信息
     (1)/sys/module/(目录下)(包含所有编译的模块信息)
 

   这里有系统中所有模块的信息,不论这些模块是以内联(inlined)方式编译到内核映像文件(vmlinuz)中还是编译为外部模块(ko文件),都可能会出现在 /sys/module 中:

   编译为外部模块(ko文件)在加载后会出现对应的 /sys/module/<module_name>/, 并且在这个目录下会出现一些属性文件和属性目录来表示此外部模块的一些信息,如版本号、加载状态、所提供的驱动程序等;

   编译为内联方式的模块则只在当它有非0属性的模块参数时会出现对应的 /sys/module/<module_name>, 这些模块的可用参数会出现在/sys/modules/<modname>/parameters/<param_name> 中,

  • 如 /sys/module/printk/parameters/time 这个可读写参数控制着内联模块 printk 在打印内核消息时是否加上时间前缀;
  • 所有内联模块的参数也可以由 "<module_name>.<param_name>=<value>" 的形式写在内核启动参数上,如启动内核时加上参数 "printk.time=1" 与 向 "/sys/module/printk/parameters/time" 写入1的效果相同;
  • 没有非0属性参数的内联模块不会出现于此
     (2)/proc/modules(记录在文件当中)
proc/moudles  那种信息的单个文件版本. 其中的条目包含了模块名, 每个模块占用的内存数量, 以及使用计数. 另外的字串追加到每行的末尾来指定标志, 对这个模块当前是活动的.
wugang@wugang-desktop:~$ cat /proc/modules 
book 3200 0 - Live 0xe042e000
hello 2560 0 - Live 0xe02c3000
i915 32512 2 - Live 0xe0417000
其中 book(模块名)   3200是模块占用内存的大小。   0是模块加载计数   Live表示模块可用
0xe042e000 肯定是模块的起始地址。
在/sys/modules模块的信息(新版)
来自内核源码目录的目标文件, 描述一个模块为之建立的环境.
wugang@wugang-desktop:~$ cd /sys/module/book
wugang@wugang-desktop:/sys/module/book$ ls
holders  initstate  notes  parameters  refcnt  sections  srcversion
holders  持有人,是写本模块的人。但是目录为空。
initstate  记录模块活动
notes   暂且没有查到,好像是日记,有个隐藏文件,可能就是记录本模块的信息 *
parameters  使用的变量
refcnt   模块的加载计数
wugang@wugang-desktop:/sys/module/book/sections$ ls
__param  __versions
其中sections目录中, __param是参数起始地址。
而sections目录中,__versions   好像和版本有关 *
这两个参数和地址有关。
srcversion    BDF6D850ED985425407E440     模块版本号 像模块的ID一样
打开/proc/kallsyms目录下文件都是0字节,且打开为空白信息。
但是用cat命令,可以查看出里面的信息。
最后翻书,操作系统运行时,进程及内核信息(cpu,硬盘分区,内存信息)存放在这里。
/proc目录为伪文件系统,proc并不是真正的文件系统,它存在于内存中。
而且/sys也是存在内存中。
-r--------   1 root       root       528420864 2008-07-17 21:25 kcore
我机子上的,/proc文件目录大小几乎全部集中在那个文件中。
且无法用命令查看其中的信息.
/proc 文件系统是一种特殊的、由程序创建的文件系统,内核使用它向外界输出信息。/proc 下面的每个文件都绑定于一个内核函数,这个函数在文件被读取时,动态地生成文件的"内容",例如,/proc/modules 列出的是当前载入模块的列表。这样可以动态访问其中进程和内核信息。
Linux系统对/proc的使用很频繁。现代Linux系统中的很多工具都是通过 /proc 来获取它们的信息,例如 ps、top 和 uptime。有些设备驱动程序也通过 /proc 输出信息,你的驱动程序当然也可以这么做。因为 /proc 文件系统是动态的,所以驱动程序模块可以在任何时候添加或删除其中的文件项。
特征完全的 /proc 文件项相当复杂;在所有的这些特征当中,有一点要指出的是,这些 /proc 文件不仅可以用于读出数据,也可以用于写入数据。不过,大多数时候,/proc 文件项是只读文件。
注:*表示我不确定的问题,有问题请参考  module.h源代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

/sys/module/ 模块信息 目录与/proc/modules文件 的相关文章

  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 使用 Grep 查找两个短语之间的文本块(包括短语)

    是否可以使用 grep 来高亮所有以以下内容开头的文本 mutablePath CGPathCreateMutable 并以以下内容结尾 CGPathAddPath skinMutablePath NULL mutablePath 这两个短
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • NUMA 在虚拟内存中是如何表示的?

    有许多资源 https en wikipedia org wiki Non uniform memory access从硬件角度描述NUMA的架构性能影响 http practical tech com infrastructure num
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • 监控子进程的内存使用情况

    我有一个 Linux 守护进程 它分叉几个子进程并监视它们是否崩溃 根据需要重新启动 如果父进程可以监视子进程的内存使用情况 以检测内存泄漏并在超出一定大小时重新启动子进程 那就太好了 我怎样才能做到这一点 您应该能够从 proc PID
  • 捕获实时流量时如何开启纳秒精度?

    如何告诉 libpcap v1 6 2 将纳秒值存储在struct pcap pkthdr ts tv usec 而不是微秒值 捕获实时数据包时 Note This question is similar to How to enable
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • Awk - 计算两个文件之间的每个唯一值和匹配值

    我有两个文件 首先 我尝试获取第 4 列中每个唯一字段的计数 然后匹配第二个文件的第二列中的唯一字段值 File1 第 4 列的每个唯一值和 File2 第 2 列包含我需要在两个文件之间匹配的值 所以本质上 我试图 gt 如果 file2
  • 限制 Imagemagick 使用的空间和内存

    我在 Rails 应用程序上使用 Imagemagick 使用 rmagick 但我的服务器 Ubuntu 不是很大 当我启动转换进程时 Imagemagick 占据了我的服务器 30GB HDD 的所有位置 内存 我想限制内存和 tmp
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen

随机推荐

  • 原码, 反码, 补码 详解

    本篇文章讲解了计算机的原码 反码和补码 并且进行了深入探求了为何要使用反码和补码 以及更进一步的论证了为何可以用反码 补码的加法计算原码的减法 论证部分如有不对的地方请各位牛人帮忙指正 希望本文对大家学习计算机基础有所帮助 一 机器数和真值
  • 人工智能数学基础--导数2:高阶导数及莱布尼茨(Leibniz)公式

    一 定义 一般地 函数y f x 的导数y f x 仍然是x的函数 我们把y f x 的导数叫做函数y f x 的二阶导数 记作y 或 即 相应地 把y f x 的导数f x 叫做函数y f x 的一阶导数 类似地 二阶导数的导数叫做三阶导
  • 新一代CTO修炼之路all-in-AI系列-大数据+AI人工智能驱动技术变革之大数据部门组织架构及团队建设

    文章目录 1 2 1大数据部门组织架构 1 大数据平台组 2 算法组 3 数据分析组 4 更细化的大数据部门划分 总结 随着大数据和人工智能技术的火热发展 传统的老一代CTO 除了有过硬的工程能力外 尚需充电学习大数据和AI人工智能技术 大
  • Qt6教程之三(2) QT使用qss

    QSS是Qt Style Sheets的缩写 中文含义是Qt样式表 它用来自定义控件外观的机制 QSS与网页中使用的CSS非常相似 可以把QSS看作是CSS在Qt领域领域的定制版本 QSS的语法规则 选择器 规则定义1 规则2 规则n 如下
  • Docker Swarm 创建服务

    Docker Swarm 创建服务 环境 系统 Centos 7 4 x64 应用版本 Docker 18 09 0 管理节点 192 168 1 79 工作节点 192 168 1 78 工作节点 192 168 1 77 1 管理节点
  • LeetCode 1800. 最大升序子数组和

    题目链接 https leetcode cn problems maximum ascending subarray sum 时间复杂度为 O n O n O n 空间复杂度为 O
  • 大学生科技创意大赛查新报告

    大学生科技创意大赛是什么 太多种类分不清 快来看 大学生科技创意大赛需要查新怎么办 去哪儿能办 大学生科技创意大赛的查新需要准备什么材料 大学生科技创意大赛科技查新报告是什么样子的 一 大学生科技创意大赛是什么 太多种类分不清 快来看 大学
  • 如何获取使用某个table的所有存储过程

    select distinct object name id from syscomments where id in select object id from sys objects where type P and text like
  • 目标识别、目标跟踪算法总结

    想自学图像处理的相关知识 正好实验室师兄做过两个关于红外目标跟踪的项目 因此从mean shift SR RP PF开始学习 但是查阅资料的时候 发现对各种算法理解非常 利用图像处理算法 实现的功能一般包括 目标的检测 识别 跟踪 常见的问
  • 机器学习顶刊文献_哪些成为了经典-引用次数最多的10篇机器学习文献

    近40年来机器学习领域产生了数以万计的论文 并以每年上万篇的速度增长 但真正能够称为经典 经受住历史检验 能投入实际应用的并不多 本文整理了机器学习历史上出现的经典论文 按照被引用次数对它们进行了排序 分为top10 被引用次数超过2万 被
  • FreeModbus的移植

    FreeModbus V1 6 主机使用说明 一 简述 FreeModbus是一款开源的Modbus协议栈 但是只有从机开源 主机源码是需要收费的 同时网上也没有发现比较好的开源的Modbus主机协议栈 所以才开发这款支持主机模式的Free
  • 【Docker】使用Docker在远程服务器上安装MySQL8并使用本地navicat连接

    使用Docker在远程服务器上安装MySQL8并使用本地navicat连接 一 下载MySQL8镜像 二 启动MySQL容器 三 配置MySQL数据库的远程访问 使用本地navicat连接服务器MySQL 四 docker中删除已创建的容器
  • 虚拟机使用情况(持续更新)

    装了虚拟机后今天打开发现文字变成了英文的 并且装好的系统打不开机 出现提示 本来用的好好的 怎么就出问题了呢 回忆起来最后使用时为了方便整理磁盘 把安装在E盘的所有虚拟机文件都放在一个命名文件里 我恢复原样后就正常使用了 可能是之前下载的时
  • 操作系统之PV操作

    基本概念 进程状态 进程通常分为就绪 运行和阻塞三个工作状态 三种状态在某些条件下可以转换 三者之间的转换关系如下 进程三个状态之间的转换就是靠PV操作来控制的 PV操作主要就是P操作 V操作和信号量 其中信号量起到了至关重要的作用 信号量
  • 微信小程序分享页面代码

    在微信小程序中实现分享功能需要以下几个步骤 1 在 app json 文件中配置分享参数 例如标题 路径等 示例如下 json pages pages index index window navigationBarTitleText 小程
  • java print\println\printf的区别

    printf主要是继承了C语言的printf的一些特性 可以进行格式化输出 print就是一般的标准输出 但是不换行 print将它的参数显示在命令窗口 并将输出光标定位在所显示的最后一个字符之后 println www infocool
  • 源NAT,目的NAT和PAT以及端口映射的区别?

    一 NAT 1 动态NAT 地址复用 指将内部私有IP转换为公网IP地址时 IP的对应关系是不确定的 也就是说只要指定哪些内部地址可以进行NAT转换 以及哪些可以的合法的IP地址可以作为外部地址 就可以进行动态转换了 也可以使用多个合法地址
  • unity3d运行后自动暂停_Unity3D 关于延迟、暂停执行脚本的几个方法总结

    1 InvokeRepeating函数 和 Invoke函数 个人认为最为有效方法 用法 InvokeRepeating delayOpen 1 5 1秒后调用 delayOpen 函数 之后每5秒调用一次 写在Start函数内 Invok
  • python实现时间序列信号的频谱、倒频谱以及功率谱

    python实现时间序列信号的频谱 倒频谱以及功率谱 认识傅里叶变换 一 频谱 1 引入库 2 频谱函数封装 二 功率谱 功率谱谱函数封装 三 倒频谱 倒频谱谱函数封装 以振动信号为例 认识傅里叶变换 这里我就不多说了 百度谷歌一大堆说的明
  • /sys/module/ 模块信息 目录与/proc/modules文件

    在内核模块编译中 会选择编译成模块 或者build in 内核镜像中 其中对内核模块有很好的的说明 这也是linux在嵌入式当中得到广泛应用的充分体现 内核中有很多功能选项 其中有许多使我们不需要的 内核设计成模块的优势所在就在这里 不需要