Linux之kmod
Linux之kmod
背景
最近在解决某些问题的时候,发现了内核模块很多以前没怎么接触的配置和用法,所以想深入了解下modinfo
、depmod
等这些内核模块工具,想简单看看其背后一些原理,但是发现这些工具的路径都指向了/bin/kmod
。
$ ls -all $(which modinfo)
lrwxrwxrwx 1 root root 9 7月 5 2021 /usr/sbin/modinfo -> /bin/kmod
可能很多人听到kmod
会很陌生,但是像insmod
、modprobe
、lsmod
等工具会很熟悉。没错,这些工具都是属于kmod
包的,所以就会发现上面的现象。
关于kmod
kmod
是 Linux 系统中用于管理内核模块(kernel modules)的工具包。它提供了一组用户空间工具,用于加载、卸载、列出和查询内核模块、解决依赖关系和别名等。kmod
是 module-init-tools
的替代品,与与 module-init-tools
项目的工具、配置和索引保持兼容,自 Linux 内核 3.0 版本以后成为默认的内核模块管理工具。
这些工具基于 libkmod
开发,libkmod
是一个随 kmod
一起提供的库。有关该库的更多详细信息以及如何使用它,请参阅 libkmod/README
。
官方git:https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git
kmod
包提供了以下常用工具:
modprobe
:加载或卸载内核模块,自动处理依赖关系。insmod
:加载指定的内核模块(不处理依赖)。rmmod
:卸载指定的内核模块。lsmod
:列出当前加载的内核模块。modinfo
:显示内核模块的详细信息。depmod
:生成模块依赖关系文件。
所以也就对应了kmod
的主要功能:
加载内核模块:
- 使用 modprobe 或 insmod 加载内核模块。
卸载内核模块:
- 使用 rmmod 或 modprobe -r 卸载内核模块。
列出已加载的模块:
- 使用 lsmod 查看当前加载的内核模块。
查询模块信息:
- 使用 modinfo 查看内核模块的详细信息。
解决模块依赖:
- modprobe 可以自动解决模块之间的依赖关系。
上面都是些关于kmod
简单介绍,后面有时间会深入看看这些工具的详细使用及背后的原理。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DD'Notes!
评论