depmod
在Linux操作系统上,depmod命令生成内核、模块、依赖关系列表和关联的映射文件。
查看英文版
1 depmod 运行系统环境
2 depmod 描述
3 depmod 语法
4 depmod 例子
depmod 运行系统环境
Unix&Linux
depmod 描述
depmod分析您的内核模块(在目录/ lib / modules / kernel-release中)并创建一个依赖项列表(名为modules.dep),以便在使用modprobe添加和删除模块时,没有其他模块的模块就不会存在要求。同时,它创建一个映射,将硬件标识符与处理它们的模块相关联。该映射用于在硬件请求时找到正确的模块。
内核依靠depmod和modprobe将其原始数据传递给其模块,以使其需要加载它们的顺序。
查看英文版
depmod 语法
depmod [-b basedir] [-e] [-E Module.symvers] [-F System.map] [-n] [-v] [-A] [-P prefix] [-w] [version]
depmod [-e] [-E Module.symvers] [-F System.map] [-m] [-n] [-v] [-P prefix] [-w] [version] [filename...]
技术说明
Linux内核模块可以提供供其他模块使用的服务(称为“符号”)(使用代码中的EXPORT_SYMBOL变体之一)。如果第二个模块使用此符号,则该第二个模块显然取决于第一个模块。这些依赖关系可能变得非常复杂。
depmod通过读取/ lib / modules / kernel-release下的每个模块并确定导出的符号和所需的符号来创建模块依赖关系列表。默认情况下,此列表写入同一目录下的modules.dep和二进制 散列版本模块modules.dep.bin中。如果在命令行上给出了文件名,则仅检查那些模块(除非列出了所有模块,否则很少有用)。
depmod还会在名为modules.symbols的文件及其二进制哈希版本modules.symbols.bin中创建模块提供的符号列表。
最后,如果模块提供了特殊的设备名称(devname),则应在启动时通过/ dev等实用程序填充特殊的设备名称(devname),从而depmod将输出一个名为modules.devname的文件。
如果提供了版本,则使用该内核版本的模块目录,而不是当前内核版本(由uname -r返回)。
选件
-a,--all |
探测所有模块。如果命令行中未提供文件名,则默认情况下启用此选项。 |
-A,--quick |
在完成任何工作之前,此选项进行扫描以查看是否有模块比modules.dep文件新:如果没有,则它以静默方式退出而不是重新生成文件。 |
-b basedir,-- basedir,basedir |
如果您的模块当前不在(常规)目录/ lib / modules / kernel-version中,但在暂存区域中,则可以指定一个在目录名之前的basedir。从生成的modules.dep文件中删除了此basedir ,因此可以将其移动到正常位置。如果您是分发供应商,需要预先生成元数据文件,而不是稍后再运行depmod,请使用此选项。 |
-C,-- config file-or-directory |
此选项将覆盖/etc/depmod.d/中的默认配置目录。 |
-e,-- errsyms |
当与-F选项结合使用时,它将报告其他模块或内核未提供的模块需要的任何符号。通常,假定模块未提供的任何符号均由内核提供(在理想情况下应该是正确的),但是这种假设可能会破坏,尤其是当未正确安装或未正确构建其他更新的第三方驱动程序时。 |
-E,--symvers |
与-e选项结合使用时,它将报告模块提供的任何符号版本,这些版本与内核在其Module.symvers中提供的符号版本不匹配。此选项与-F互不兼容。 |
-F,-- filesyms System.map |
随构建内核时生成的System.map提供,这允许-e选项报告未解析的符号。此选项与-E互不兼容。 |
-h,--help |
打印帮助消息并退出。 |
-n,-- dry-run |
这会将生成的modules.dep和各种映射文件发送到标准输出,而不是将它们写入模块目录。 |
-P |
有些体系结构在符号前加上多余的字符。这指定要忽略的前缀字符(例如' _ ')。 |
-v,-- verbose |
详细模式;depmod将把每个模块所依赖的所有符号以及提供该符号的模块文件名打印到标准输出中。 |
-V,-- version |
显示depmod的版本并退出。在旧版内核上运行时的注意事项,请参见下文。 |
-w |
警告重复的依赖项,别名,符号版本等。 |
查看英文版
depmod 例子
以下一系列命令说明了使用depmod的常用方法。每个命令都以sudo为前缀,因为它们需要root权限:
sudo ln -s /path/to/your-kernel-module.ko /lib/modules/`uname -r`
sudo depmod -a
sudo modprobe your-kernel-module
这些命令执行以下操作:
- 在第一个命令中,我们使用ln在目录/ lib / modules / kernel-release中创建一个指向我们模块文件的符号链接。由外壳程序执行的命令uname -r(用反引号引起来)由外壳程序执行,并转换为代表我们的内核发行版的适当字符串。
- 在第二个命令中,由depmod -a生成更新的依赖项列表,以确保我们正在安装的模块知道所有现有模块和依赖项。在第三条命令中安装模块时,modprobe将使用此依赖项列表。
- modprobe将安装内核模块。
查看英文版
未知的网友