В чем разница между insmod и modprobe?

Есть ли различия между insmod и modprobe?

42
задан 5 January 2011 в 00:02

4 ответа

Per man insmod:

Большинство пользователей захотят использовать вместо этого modprobe, который более умён и умеет работать с модульными зависимостями.

33
ответ дан 5 January 2011 в 00:02

modprobe читает модули из /lib/modules/$(uname -r)/modules.dep.bin (или без суффикса .bin, если другой файл недоступен). Из того же файла загружаются зависимости.

modprobe принимает имя файла .ko в /lib/modules/$(uname -r) (или без суффикса /modules.dep.bin, если другой файл недоступен). g. nvidia-current для файла dkms/nvidia-current.ko) и псевдонимов (modules.alias.bin). Builtins (modules.alias.bin) также распознаются, но так как эти модули загружаются по умолчанию, то нет смысла развивать этот тип модулей.

insmod, с другой стороны, принимает пути к файлам. Модуль не обязательно должен находиться в /lib/modules/$(uname -r), но зависимости автоматически не загружаются. Это нижняя программа, используемая modprobe для загрузки модулей.

Другие программы, связанные с модулями, это rmmod и modinfo.

rmmod удаляет имя ядра, основанное на имени из /proc/modules. Это имя не обязательно должно совпадать с именем, переданным в modprobe (для файла nvidia-current это, например, nvidia).

modinfo принимает имя файла, или имя файла без . суффикс ko в /lib/modules/$(uname -r).

44
ответ дан 5 January 2011 в 00:02

modprobe интеллектуальный команда, она ищет зависимости при загрузке модуля. Предположим, я загрузил модуль, символы которого определены в каком-то другом модуле (этот путь модуля указан внутри основного модуля). Итак, modprobe загружает основной модуль и зависимый модуль.

Но если используется insmod , он не загружает зависимость и, следовательно, будет выдавать ошибки компиляции, такие как Неразрешенные символы . В этом случае мы должны вручную искать зависимые модули и загружать их для устранения ошибок.

4
ответ дан 5 January 2011 в 00:02

Утилита modprobe заслуживает упоминания. modprobe, как и insmod, загружает модуль в ядро. Он отличается тем, что он будет смотреть на загружаемый модуль, чтобы увидеть, ссылается ли он на какие-либо символы, которые в настоящее время не определены в ядре. Если такие ссылки найдены, modprobe ищет другие модули в текущем пути поиска модулей, которые определяют соответствующие символы. Когда modprobe находит эти модули (которые необходимы загружаемому модулю), он также загружает их в ядро. Если вместо этого вы используете insmod, команда завершится ошибкой, и в системном журнале останется сообщение «неразрешенные символы»

0
ответ дан 5 January 2011 в 00:02

Другие вопросы по тегам:

Похожие вопросы: