首页 > 编程知识 正文

linux模块加载命令,linux模块加载脚本

时间:2023-05-06 03:24:40 阅读:259350 作者:1255

说明

modprobe(module probe)

功能说明:自动处理可载入模块。

语  法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]

补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

insmod 与 modprobe 都是载入 kernel module,不过一般差别于 modprobe 能够处理 module 载入的相依问题。
  比方你要载入 a module,但是 a module 要求系统先载入 b module 时,直接用 insmod 挂入通常都会出现错误讯息,不过 modprobe 倒是能够知道先载入 b module 后才载入 a module,如此相依性就会满足。
  不过 modprobe 并不是大神,不会厉害到知道 module 之间的相依性为何,该程式是读取 /lib/modules/2.6.xx/modules.dep 档案得知相依性的。而该档案是透过 depmod 程式所建立。
补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

举例

查看modules的配置文件:
$modprobe -c
这里,可以查看modules 的配置文件,比如模块的alias.html' target='_blank'>别名是什么等。会打印许多行信息,例如其中的一行会类似如下:
alias symbol:ieee80211_remove_wds_addr wlan

列出内核中所有已经或者未挂载的所有模块:
$modprobe -l
这里,我们能查看到我们所需要的模块,然后根据我们的需要来挂载;其实modprobe -l 读取的模块列表就位于 /lib/modules/'uname -r' 目录中;其中uname -r 是内核的版本.例如输出结果的其中一行是:
/lib/modules/2.6.27-7-generic/kernel/arch/x86/oprofile/oprofile.ko

挂载vfat模块:
#modprobe vfat
这里,使用格式"modprobe 模块名"来挂载一个模块。挂载之后,用lsmod可以查看已经挂载的模块。模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀。

移除已经加载的模块:
#modprobe -r 模块名
这里,移除已加载的模块,和rmmod 功能相同。注意:模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀.

与内核模块操作相关的命令还有:lsmod modinfo depmod rmmod inmod modprobe

modprobe 命令是根据depmod -a的输出/lib/modules/version/modules.dep来加载全部的所需要模块。  
删除模块的命令是:modprobe -r filename  
系统启动后,正常工作的模块都在/proc/modules文件中列出。使用lsmod命令也可显示相同内容。  
在内核中有一个“Automatic kernel module loading"功能被编译到了内核中。当用户尝试打开某类型的文件时,内核会根据需要尝试加载相应的模块。/etc/modules.conf或 /etc/modprobe.conf文件是一个自动处理内核模块的控制文件。

选项

-v --verbose

打印有关程序正在执行的消息。通常,modprobe仅在出现问题时才打印消息。

此选项通过安装删除命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。

-C --config

此选项将覆盖默认的配置目录/文件(/etc/modprobe.d或/etc/modprobe.conf)。

此选项通过安装删除命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。

-c --showconfig

从config目录中转储有效的配置并退出。

-n --dry-run

除了实际插入或删除模块(或运行安装或删除命令)以外,该选项可以执行所有操作。与-v结合使用,对于调试问题很有用。

-i --ignore-install --ignore-remove

此选项使modprobe忽略在命令行中指定的模块的配置文件(如果有)中的安装删除命令(任何从属模块仍受配置文件中为其设置的命令的约束)。参见modprobe.conf(5)。

-q --quiet

通常,如果您尝试删除或插入无法找到的模块(不是别名或install / remove 命令),则modprobe将报告错误。使用此标志,modprobe将仅忽略任何虚假名称(内核使用它来机会性地探查可能存在的模块)。

-r --remove

此选项导致modprobe删除而不是插入模块。如果它依赖的模块也没有使用,modprobe也会尝试删除它们。与插入不同,可以在命令行上指定多个模块(删除模块时指定模块参数没有意义)。

通常没有理由删除模块,但是某些故障模块需要这样做。您的内核可能不支持删除模块。

-w --wait

该选项仅适用于-r或--remove选项。它导致modprobe在内核中阻塞(在内核模块处理代码本身内),等待指定模块的引用计数达到零。默认情况下,modprobe的操作类似于rmmod,如果模块的引用计数为非零,则将以EWOULDBLOCK退出。

-V --version

显示程序版本并退出。

-f --force

尝试从模块中剥离所有版本信息,否则可能会阻止其加载:这与同时使用--force-vermagic 和--force-modversion相同。当然,这些检查是为了保护您,因此使用此选项很危险。

这适用于插入的任何模块:命令行上的模块(或别名)以及它所依赖的任何模块。

--force-vermagic

每个模块都包含一个包含重要信息的小字符串,例如内核和编译器版本。如果模块无法加载,并且内核抱怨“版本魔术”不匹配,则可以使用此选项将其删除。当然,此检查是为了保护您,因此使用此选项很危险。

这适用于插入的任何模块:命令行上的模块(或别名)及其依赖的任何模块。

--force-modversion

使用CONFIG_MODVERSIONS设置编译模块时,将创建一个部分,详细说明该模块使用(或提供)的每个接口的版本。如果模块无法加载,并且内核抱怨该模块不同意某个接口的版本,则可以使用“ --force-modversion”完全删除该版本信息。当然,此检查是为了保护您,因此使用此选项很危险。

这适用于插入的所有模块:命令行上的模块(或别名)及其依赖的任何模块。

-l --list

列出与给定通配符匹配的所有模块(如果没有通配符,则列出“ *”)。提供此选项是为了向后兼容:请参阅find(1)和 basename(1),以获得更灵活的选择。

-a --all

在命令行上插入所有模块名称。

-t --type

限制-l到模块匹配的目录目录名给出。提供此选项是为了向后兼容:请参阅find(1)和 basename(1),以获得更灵活的选择。

-s --syslog

此选项使所有错误消息都通过syslog机制(如级别为LOG_NOTICE的LOG_DAEMON)而不是标准错误。当stderr不可用时,也会自动启用它。

此选项通过安装删除命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。

-S --set-version

设置内核版本,而不是使用uname(2)来确定内核版本(这决定了在哪里找到模块)。

-D --show-depends

列出模块(或别名)的依赖关系,包括模块本身。这将产生一组(可能为空)模块文件名,每行一个,每个文件名以“ insmod”开头。适用的安装命令以“ install”为前缀显示。它不运行任何安装命令。请注意,modinfo(8)可用于从模块本身提取模块的依赖项,但不了解别名或安装命令。

-o --name

此选项尝试重命名要插入内核的模块。某些测试模块可以多次插入,但是内核拒绝使用两个相同名称的模块。通常,模块不应要求多次插入,因为如果没有模块支持,这将使它们无用。

--first-time

通常,如果被告知插入一个已经存在的模块或删除一个不存在的模块,modprobe将成功(不执行任何操作)。这是简单脚本的理想选择。但是,更复杂的脚本通常希望知道modprobe是否确实做了某些事情:此选项使modprobe在这种情况下失败。

--dump-modversions

打印出模块所需的模块版本信息列表。发行版通常使用此选项,以便使用模块版本控制部门打包Linux内核模块。

-b --use-blacklist

此选项使modprobe也将配置文件(如果有)中的黑名单命令应用于模块名称。它通常由 udev(7)使用。

-d --dirname

可以找到模块的目录,默认为/ lib / modules / RELEASE。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。