Linux/Unix命令:modprobe . txt

在Linux系统上加载内核模块

Linux内核已经成长为一个庞大的软件。在某些方面,这是一件好事。在其他情况下,它使它有些不灵活。解决方案是将内核的各个部分分解成模块。根据计算机的配置和您的需要,可以加载或不加载这些模块。modprobe命令在Linux系统上加载新的内核模块,允许您在不重新启动的情况下启用新特性和支持。

年轻的建筑师在办公室使用笔记本电脑的肖像
Westend61 / Getty Images

使用Modprobe

Modprobe通常使用起来很简单。知道了要加载的内核模块后,将它传递给modprobe命令。

Sudo modprobe rtl8723de

这就是它的全部。该模块一直加载到重新启动系统为止。

如果希望在不重新引导的情况下删除模块,请使用- r国旗。

Sudo modprobe -r rtl8723de

在大多数情况下,这就是modprobe的工作方式。要了解更多信息,请查看下面的技术文档。

Modprobe技术文档

modprobe命令执行可加载模块的高级处理。

剧情简介

modprobe[-adnqv] [- c配置模块[符号=值…]modprobe[-adnqv] [- c配置] [- t类型)模式modprobe- l - c (配置] [- t类型)模式modprobe(- c - c配置modprobe-r [-dnv] [-C .配置[模块…]modprobevh

选项

——一个——所有

加载所有匹配的模块,而不是在第一次成功加载后停止。

- c——showconfig

显示当前使用的配置。

- c——配置配置

使用文件配置而不是(可选的)/指定配置。环境变量MODULECONF也可以用来选择(和覆盖)不同的配置文件从默认/(或/etc/conf.modules已弃用)。

当环境变时UNAME_MACHINE时,modutils使用其值而不是uname()系统调用中的机器字段。这主要用于在32位用户空间中编译64位模块时,反之亦然UNAME_MACHINE到模块的类型。目前的模块不支持完全的模块交叉构建模式,只能在两者之间进行选择32位和64位主机架构的版本。

- d——调试

显示关于模块堆栈的内部表示的信息。

- h——帮助

显示选项摘要并立即退出。

- k——autoclean

在加载的模块上设置自动清理。内核在调用modprobe以满足缺少的特性时使用(作为模块提供)。的q选择权隐含于- k。这些选项会自动发送到insmod。

- n——显示

不要执行动作,只显示要做什么。

q——安静

不要抱怨insmod安装模块失败。继续使用modprobe要测试的其他可能性,但是保持沉默。该选项会自动发送到insmod。

- r——删除

删除模块(堆栈)或执行自动清理,这取决于命令行中是否提到了任何模块。

- s——syslog

通过syslog而不是stderr报告。该选项会自动发送到insmod。

- tmoduletype——类型moduletype

只考虑这种类型的模块。Modprobe只查看其目录路径包含的模块/ moduletype /moduletype可以包含多个目录名,例如,- t司机/净列出的模块xxx /司机/ net/及其子目录。

- v——详细

打印所有执行的命令。

- v,版本

显示modprobe的版本号。

模块名不能包含路径(不能包含路径)/),名称也不能包含尾名. o。例如,是有效的模块名吗modprobe/lib/modules/2.2.19/net/slip而且slip.o是无效的。这适用于命令行和配置中的条目。

命令说明

modprobe和depmod实用程序旨在为用户、管理员和发行版维护者提供更易于管理的Linux模块化内核。

Modprobe使用一个由depmod创建的类似makefile的依赖文件,自动从预定义目录树中可用的模块集中加载相关模块。

Modprobe用于加载单个模块、一组相关模块或所有用指定标记标记的模块。

如依赖文件所述,Modprobe自动加载模块堆栈中所需的所有基本模块modules.dep。如果这些模块中的一个加载失败,则当前会话中加载的整个当前模块堆栈将自动卸载。

Modprobe有两种加载模块的方式。一种方法(探测模式)将尝试从列表(由模式).一旦一个模块加载成功,Modprobe就会停止加载。这可以用于从列表中自动加载一个以太网驱动程序。使用modprobe的另一种方法是从列表中加载所有模块。

有选项- r, modprobe自动卸载一堆模块,类似的方式rmmod - r所做的事。只使用modprobe - r清除未使用的自动加载模块,并在配置文件中执行删除前和删除后命令/

组合选项- l而且- t列出某一类型的所有可用模块。

选项- c打印当前使用的配置(默认+配置文件)。

配置

modprobe(和depmod)的行为可以通过(可选的)配置文件修改/。有关该文件可以包含什么内容的详细描述,以及depmod和modprobe使用的默认配置,请参见modules.conf(5)。

如果一个模块被内核自动清理,则不执行pre-和post-remove命令。相反,请寻找即将出现的对持久模块存储的支持。如果你想使用安装前和安装后的特性,关闭内核的自动清理功能,而是在crontab中输入如下代码(这也用于kmod系统),每2分钟进行一次自动清理:

*/2 * * * * test -f /proc/modules && /sbin/modprobe -r

策略

其思想是,modprobe将首先查找包含为当前内核版本编译的模块的目录。如果在那里没有找到模块,modprobe将在内核版本(例如2.0、2.2)的公共目录中查找。如果仍然没有找到模块,modprobe将在包含模块的目录中查找默认版本,依此类推。

当您安装一个新的Linux时,模块应该移动到与您正在安装的内核的发行版(和版本)相关的目录。然后,从这个目录执行符号链接到默认目录。

每次编译一个新内核时,命令使modules_install创建一个新目录,但不会更改默认链接。

当您获得与内核发行版无关的模块时,请将其放在下面的版本独立目录之一中/lib/modules

这是默认策略,可以在/

例子

Modprobe -t net

加载存储在标记目录中的一个模块。每个模块都要尝试,直到其中一个成功为止。

Modprobe -a -t boot

存储在有标签的目录中的所有模块引导正在加载。

modprobe滑

这将尝试加载模块slhc.o如果它之前没有加载,因为slip模块需要SLHC模块中的功能。该依赖关系在文件中进行了描述modules.dep由depmod自动创建。

Modprobe -r slip

这将卸载滑移模块。它还自动卸载slhc模块,除非它也被其他模块使用(例如,ppp)。

另请参阅depmod(8), lsmod(8), kerneld(8), ksyms(8),rmmod(8)。

安全模式

如果有效uid不等于实际uid,那么modprobe会以极端怀疑的态度对待它的输入。最后一个参数总是被视为模块名,即使它以-。表单只能有一个模块名和选项变量=值是被禁止的。模块名始终被视为字符串,在安全模式下不执行元扩展。但是,从配置文件中读取的数据采用元扩展。

当从内核调用modprobe时,Euid可能不等于uid,对于内核2.4.0-test11和更高版本是这样。在理想情况下,modprobe可以信任内核只向modprobe传递有效参数。但是,由于高级内核代码将未经验证的参数直接从用户传递给modprobe,因此至少发生了一次本地根漏洞利用。因此modprobe不再信任内核输入。

当环境仅由这些字符串组成时,Modprobe自动设置安全模式

家= /
词= linux
路径= / sbin: / usr / sbin / bin: / usr / bin

这将检测来自内核2.2到2.4.0-test11上的内核的modprobe执行,即使uid == euid也是如此,就像它在早期内核上做的那样。

日志的命令

如果目录/var/log/ksymoops存在并且modprobe运行时带有加载或删除模块的选项,modprobe记录其命令并返回状态/var/log/ksymoops/“日期+ % Y % m % d.log”。没有禁用此自动日志记录的开关,如果您不希望发生这种情况,请不要创建/var/log/ksymoops。如果该目录存在,它应该由root拥有,模式为644或600,您应该运行脚本insmod_ksymoops_clean每天都这样。

所需的工具

depmod(8)、insmod(8)。

使用男人。命令(%的人),以了解如何在电脑上使用命令。

这个页面有用吗?