根据我的阅读,depmod的目的是跟踪每个内核模块在加载时的依赖关系。为什么不能在加载内核模块时自动确定这个,类似于动态加载用户空间共享库?
答案 0 :(得分:15)
depmod不仅仅是计算直接依赖关系 - 它还构建了硬件标识符与处理它们的模块之间的映射。这用于找到要为检测到的硬件加载的正确模块。
至于为什么它不像用户空间那样进行需求加载,部分原因是因为设计不允许内核链接器访问文件系统。内核中的哲学是文件系统的布局完全取决于用户空间,因此无法保证在foo.ko
中找到/lib/modules/3.0.1/drivers/somesubsys/foo.ko
。因此,内核依赖用户空间实用程序(如depmod和modprobe)按照需要加载它们的顺序将模块的原始数据传递给它;如果用户空间在这个作业中失败,它只会返回一个错误,并让用户空间处理这个混乱。