Linux内核模块管理
Linux内核模块管理内核模块保存的位置内核模块数据库生成modules.dep文件查看内核模块加载和删除内核模块参考: http://c.biancheng.net/view/1039.html内核模块保存的位置内核模块的保存位置在 /lib/modules/ 内核版本 /kernel/ 目录中内核模块数据库Linux 中所有的模块都存放在 /lib/modules/2.6.32-279.el6
Linux内核模块管理
内核模块保存的位置
参考: http://c.biancheng.net/view/1039.html
内核模块的保存位置在 /lib/modules/内核版本号/kernel/ 目录中
# 获取内核版本号
uname -a |awk '{print $3}'

modules.dep内核模块数据库文件
Linux中所有的内核模块都存放在 /lib/modules/$(uname -a |awk '{print $3}')/modules.dep 文件中,在安装模块时,依赖这个文件査找所有的模块,所以不需要指定模块所在位置的绝对路径,而且也依靠这个文件来解决模块的依赖性。
生成modules.dep(内核模块数据库文件)
modules.dep 文件如果不存在,可以手动执行depmod 命令来生成.depmod 命令会扫描系统中已有的内核模块,并生成modules.dep 文件.
insmod安装ko模块文件
# 安装ko模块文件
insmod /home/dpvs/dpdk-stable-17.11.2/build/kmod/igb_uio.ko
modprobe常用参数:
| 参数 | 解释 |
|---|---|
-a |
同时加载指定模块的所有依赖模块。 |
-r |
卸载指定的内核模块,并卸载其依赖的其他模块(如果没有其他模块依赖该模块)。 |
-l |
列出所有可用的内核模块。 |
-q |
静默模式,不显示任何输出信息。 |
-v |
详细模式,显示详细的输出信息。 |
-c |
检查模块依赖关系并显示任何错误信息。 |
-d |
指定一个用于加载内核模块的目录。 |
-n |
禁止自动加载模块。 |
-s |
禁止自动加载模块的符号版本检查。 |
查看内核模块
# 查看系统当前加载的模块
lsmod
# 查看指定模块的信息
# modinfo 模块名 例如:
modinfo autofs4

# 查看模块
lsmod | grep wireguard

加载内核模块
# 加载模块
modprobe 模块名

加载模块的依赖模块
## -a 参数表示同时加载指定模块的所有依赖模块
modprobe -a 模块名
配置内核模块在OS启动时自动加载
https://wiki.archlinuxcn.org/wiki/%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97
https://manpages.ubuntu.com/manpages/focal/zh_CN/man5/modules-load.d.5.html
https://www.freedesktop.org/software/systemd/man/modules-load.d.html
systemd-modules-load.service 从下列目录中读取文件,这些文件包含要在引导期间加载的静态列表中的内核模块。
相关目录:
| 目录路径 | 解释 |
|---|---|
/etc/modprobe.d/ |
用于在加载内核模块时指定参数或禁用模块。配置文件以 .conf 结尾,可用于设置模块选项或黑名单。 |
/etc/modules-load.d/ |
指定系统启动时自动加载的内核模块。每个文件列出需要加载的模块名称,一行一个模块。 |
/run/modules-load.d/*.conf |
类似于 /etc/modules-load.d/,用于在系统运行时临时指定要加载的模块。由于 /run/ 是一个临时文件系统,配置在系统重启后会消失。 |
/usr/lib/modules-load.d/*.conf |
系统和软件包默认提供的模块加载配置。它们指定在系统启动时加载的内核模块,通常不建议用户手动修改。 |
开机自动加载内核模块示例
https://wiki.gentoo.org/wiki/WireGuard/etc/modules-load.d/
# 在系统启动时自动加载virtio-net.ko
echo virtio-net >/etc/modules-load.d/virtio-net.conf
# 在系统启动时自动加载zfs内核模块
echo zfs >/etc/modules-load.d/zfs.conf
# 在系统启动时自动加载wireguard内核模块
echo wireguard >/etc/modules-load.d/wireguard.conf
# 在系统启动时自动加载tun内核模块
echo tun >/etc/modules-load.d/tun.conf
# 在系统启动时自动加载ip_gre内核模块
echo ip_gre >/etc/modules-load.d/ip_gre.conf
持久化配置内核模块的加载参数
/etc/modprobe.d
该目录的一些常见用途和作用:
在该目录中创建以 .conf 结尾的配置文件;
-
黑名单: 配置文件中使用blacklist关键字,指定要屏蔽的模块,以防止其加载。 -
参数配置: 配置文件中使用options关键字,指定加载模块时要传递的参数值。这样可以灵活地配置模块的行为。 -
别名设置: 配置文件并使用alias关键字,您可以定义模块的别名。
# 配置内核模块的加载参数
echo "options zram num_devices=1" >/etc/modprobe.d/zram.conf
删除内核模块
# 卸载模块
modprobe -r 模块名
更多推荐



所有评论(0)