Linux 下的 Modprobe 命令

2020-06-26 15:58:02 浏览数 (1)

本文最先发布在: https://cloud.tencent.com/developer/article/1647140

Linux kernel 是 Linux 操作系统的核心部分。它管理着系统资源,并且它是你的计算机软硬件之间的桥梁。

Linux kernel 有一个模块化设计。一个 kernel 模块,通常被称为 驱动程序,是用来扩展内核功能的一段代码。模块要么被编译成可加载的模块,要么被打包进内核中。可加载的模块可以在内核运行时,按照需求加载或者卸载,而不需要重启系统。

通常,模块都是由udev按照需求加载的。不管怎样,有时候你需要对模块加载进行微调。例如,你可能需要在加载一个模块时,添加一些额外的参数,或者组织模块的自动加载。

你可以使用modprobe命令手动将一个模块加载进内核。,或者使用/etc/modules或者/etc/modules-load.d/*.conf文件让模块进行开机启动。

在这篇文章中,我们将会讲解如何使用modprobe来从 Linux 内核中 添加或者移除模块。modprobekmod的一部分,它是用来管理 Linux 内核模块的多个程序的封装二进制包。

一、添加内核模块

内核模块被储存在/lib/modules/<kernel_version>目录。使用uname -r命令,你将会找到运行内核的版本号。

仅仅有管理员权限的用户可以管理内核模块。

想要加载模块,运行modprobe命令加上模块名:

代码语言:javascript复制
modprobe module_name

modprobe命令将会加载给出的模块,以及任何依赖的模块。在命令行中一次只能指定一个模块。

使用lsmod命令可以列出加载的模块:

代码语言:javascript复制
lsmod | grep module_name

想要使用额外的参数加载模块,使用parameter=value语法:

代码语言:javascript复制
modprobe module_name parameter=value

这个命令接收多个parameter=value,由空格隔开。

通常,你需要在系统启动的时候加载模块。你可以通过在文件夹/etc/modules-load.d目录下的文件中指定模块以及相应的参数。

文件必须以.conf结尾,并且可以使用任何名字:

代码语言:javascript复制
/etc/modules-load.d/module_name.conf
代码语言:javascript复制
option module_name parameter=value

在这些文件中指定的设置,由udev读取,它将会在系统启动时,使用modprobe来加载模块。

二、移除内核模块

想要移除一个模块,运行modprobe命令加上-r选项,加上模块名:

代码语言:javascript复制
modprobe -r module_name

modprobe将会移除不被使用模块依赖。

当使用-r运行时,这个命令接受多个模块作为参数:

代码语言:javascript复制
modprobe -r module_name1 module_name2

如果想要阻止一个内核模块在系统启动时加载,在文件夹/etc/modprobe.d下面创建一个.conf文件,名字随意,语法如下:

代码语言:javascript复制
/etc/modprobe.d/blacklist.conf
代码语言:javascript复制
blacklist module_name

如果你想添加额外的模块,在新的一行指定模块,或者创建一个新的.conf文件。

三、总结

modprobe命令可以允许你添加或者移除 Linux 内核模块。

如果你有任何疑问,请通过以下方式联系我们:

微信:

微信群: 加上面的微信,备注微信群

QQ: 3217680847

QQ 群: 82695646

0 人点赞