9
从我读到的内容来看,depmod的目的是为了跟踪每个内核模块何时加载的依赖关系。为什么不能在加载内核模块时自动确定,类似于动态加载用户空间共享库?为什么建立和使用内核模块需要depmod?
从我读到的内容来看,depmod的目的是为了跟踪每个内核模块何时加载的依赖关系。为什么不能在加载内核模块时自动确定,类似于动态加载用户空间共享库?为什么建立和使用内核模块需要depmod?
depmod不仅仅是计算直接依赖关系 - 它还建立了硬件标识符和处理它们的模块之间的映射。这用于找到加载检测到的硬件的正确模块。
至于为什么它不会像用户空间那样做需求加载,部分原因是因为内核链接程序不允许通过设计访问文件系统。内核中的哲学是文件系统的布局完全取决于用户空间,因此不能保证foo.ko
将在/lib/modules/3.0.1/drivers/somesubsys/foo.ko
中找到。因此,内核依赖于用户空间实用程序(如depmod和modprobe)将其模块的原始数据按照其加载所需的顺序传递给它;如果用户空间在这个工作中失败,它只是返回一个错误,并让用户空间处理混乱。
但是,modprobe可以负责解决模块内信息的依赖关系,并首先探测相应的依赖模块,不是吗? – PypeBros 2013-03-12 12:22:28
depmod为modprobe的使用构建这个依赖信息的缓存。实际上扫描所有模块的信息可能需要相当长的一段时间,所以您不希望每次调用modprobe时都这样做 – bdonlan 2013-03-23 04:24:25