我在写一个内核模块,它依赖于一个现有的内核模块。我从树中构建我的模块(作为外部模块)。如何使一个Linux内核模块依赖于具有depmod的另一个外部模块?
如何声明依赖关系,以便通过depmod识别它?
我在写一个内核模块,它依赖于一个现有的内核模块。我从树中构建我的模块(作为外部模块)。如何使一个Linux内核模块依赖于具有depmod的另一个外部模块?
如何声明依赖关系,以便通过depmod识别它?
你不需要。 depmod将运行当前/ lib/modules /目录中的所有模块,并基于未解析的符号构建依赖关系树。
默认情况下,它会假定其他模块未提供的任何符号都在内核中,但是您可以使用-e/-F选项来检查是否也是如此。
虽然并不完全令人满意,最好的我已经拿出来让modprobe
工作要么增加modules.dep
# tail -1 modules.dep
../../../../home/ctuffli/mymod/mymod.ko: kernel/drivers/scsi/libsas/libsas.ko kernel/drivers/scsi/scsi_transport_sas.ko
或可替代项,树外的模块象征性地链接到/lib/modules/
和让depmod找出依赖关系
# ln -s /home/ctuffli/mymod/mymod.ko /lib/modules/2.6.31-19-server/kernel/drivers/scsi/
# depmod
# grep mymod /lib/modules/2.6.31-19-server/modules.dep
kernel/drivers/scsi/mymod.ko: kernel/drivers/scsi/libsas/libsas.ko kernel/drivers/scsi/scsi_transport_sas.ko
自动设置'depmod'的最小QEMU + Buildroot示例:https://stackoverflow.com/a/44614246/895245 – 2017-06-18 11:03:18