depmod делает больше, чем просто вычисляет прямые зависимости - он также создает отображение между аппаратными идентификаторами и модулями, которые их обрабатывают. Это используется, чтобы найти правильный модуль для загрузки для обнаруженного аппаратного элемента.
Что касается того, почему он не требует загрузки, как это делает пользовательское пространство, отчасти это происходит из-за того, что компоновщику ядра не разрешен доступ к файловой системе. Философия ядра заключается в том, что структура файловой системы полностью зависит от пространства пользователя, и поэтому нет гарантии, что foo.ko
будет найдено в /lib/modules/3.0.1/drivers/somesubsys/foo.ko
. Таким образом, ядро полагается на утилиты пользовательского пространства (такие как depmod и modprobe) для передачи ему необработанных данных для своих модулей в порядке, в котором они должны их загружать; если пользовательское пространство завершается с ошибкой в этом задании, оно просто возвращает ошибку и позволяет пользовательскому пространству справиться с беспорядком.