Linux命令学习手册-dep

作者: QuietHeart | 来源:发表于2020-02-21 11:05 被阅读0次
depmod [-b basedir] [-e] [-F System.map] [-n] [-v] [version] [-A] 
depmod [-e] [-F System.map] [-n] [-v] [version] [filename...]

功能

分析可加载模块的依赖性,生成 modules.dep 文件和映射文件。

描述

补充说明: depmod 可检测模块的相依性,供 modprobe 在安装模块时使用。

Linux内核模块可以为其它模块提供提供服务(在代码中使用 EXPORT_SYMBOL ),这种服务被称作 symbols 。若第二个模块使用了这个 symbol ,则该模块很明显依赖于第一个模块。这些依赖关系是非常繁杂的。

depmod 读取在 /lib/modules/version 目录下的所有模块,并检查每个模块导出的 symbol 和需要的 symbol ,然后创建一个依赖关系列表。默认地,该列表写入到 /lib/moudules/version 目录下的 modules.dep 文件中。若命令中的 filename 有指定的话,则仅检查这些指定的模块(不是很有用)。

若命令中提供了 version 参数,则会使用 version 所指定的目录生成依赖,而不是当前内核的版本( uname -r 返回的)。

选项:

  • -a 检查所有模块,如果命令中没有文件名称,这个选项默认是开启的。
  • -b basedir --basedir basedir 若你的模块并没有正确的在 /lib/mdules/version 下,可以指定目录生成依赖。
  • -e --errsyms-F 选项一起使用,当一个模块需要的 symbol 在其它模块里面没有提供时,做出报告。正常情况下,模块没有提供的 symbol 都在内核中有提供。
  • -F --filesyms System.map 提供一个 System.map 文件(在内核编译时生成的)许 -e 选项报告出unresolved symbol。
  • -n --dry_run 将结果 modules.dep 和各种映射文件输出到标准输出( stdout ),而不是写到模块目录下。
  • -A --quick 检查是否有模块比 modues.dep 中的模块新,若没有,则退出不重新生成文件。

举例

由于会修改文件,为了防止这个现象,例子使用了 -n ,不修改文件却写出结果。

查看 usbserial.ko 的依赖

#depmod -n usbserial.ko

输入之后,输出如下:

usbserial.ko: 

# pci module         vendor     device     subvendor  subdevice  class      class_mask driver_data 

# usb module         match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info 

# ccw module         match_flags cu_type cu_model dev_type dev_model 

# ieee1394 module    match_flags vendor_id model_id specifier_id version 

# isapnp module      cardvendor carddevice driver_data vendor     function   ... 

# module         matchBits bustype vendor product version evBits keyBits relBits absBits mscBits ledBits sndBits ffBits [swBits] driver_info 

# of module          name                 type                 compatible 

# serio module       type extra id   proto 

# Aliases extracted from modules themselves. 

# Aliases for symbols, used by symbol_request(). 

alias symbol:usb_serial_generic_write_bulk_callback usbserial 

alias symbol:ezusb_set_reset usbserial 

alias symbol:usb_serial_register usbserial 

alias symbol:usb_serial_deregister usbserial 

alias symbol:usb_serial_generic_read_bulk_callback usbserial 

alias symbol:ezusb_writememory usbserial 

alias symbol:usb_serial_probe usbserial 

alias symbol:usb_serial_port_softint usbserial 

alias symbol:usb_serial_generic_open usbserial 

alias symbol:usb_serial_disconnect usbserial

相关文章

网友评论

    本文标题:Linux命令学习手册-dep

    本文链接:https://www.haomeiwen.com/subject/qiyaxhtx.html