Есть ли различия между insmod и modprobe?
35
За man insmod
:
Большинство пользователей захотят использовать вместо этого modprobe, который является более умным и может обрабатывать зависимости модулей.
modprobe
читает модули из/lib/modules/$(uname -r)/modules.dep.bin
(или без.bin
суффикса, если другой файл недоступен). Из того же файла загружаются зависимости.modprobe
принимает имя.ko
файла в/lib/modules/$(uname -r)
(например,nvidia-current
для файлаdkms/nvidia-current.ko
) и псевдонимы (modules.alias.bin
). Встроенные функции (modules.alias.bin
) также распознаются, но, поскольку эти модули загружаются по умолчанию, нет смысла в том, чтобы проверять модемы такого типа.insmod
с другой стороны, принимает пути к файлам. Модуль не должен постоянно находиться/lib/modules/$(uname -r)
, но зависимости не загружаются автоматически. Это нижняя программа, используемаяmodprobe
для загрузки модулей.Другие программы, связанные с модулями
rmmod
иmodinfo
.rmmod
удаляет имя ядра на основе имени из/proc/modules
. Это имя не обязательно должно совпадать с именем, переданнымmodprobe
(например, дляnvidia-current
файлаnvidia
).modinfo
принимает имя файла или имя файла без.ko
суффикса в/lib/modules/$(uname -r)
.источник
modprobe
это интеллектуальная команда, она ищет зависимости при загрузке модуля. Предположим, если я загрузил модуль, в котором есть символы, определенные в каком-то другом модуле (этот путь к модулю указан внутри основного модуля). Итак,modprobe
загружается основной модуль и зависимый модуль.Но если
insmod
он используется, он не будет загружать зависимость, и, следовательно, он выдаст ошибки компиляции, такие какUnresolved symbols
. В этом случае мы должны вручную искать зависимые модули и загружать их для устранения ошибок.источник
Полезно упомянуть утилиту modprobe. modprobe, как и insmod, загружает модуль в ядро. Он отличается тем, что смотрит на загружаемый модуль, чтобы увидеть, ссылается ли он на какие-либо символы, которые в данный момент не определены в ядре. Если такие ссылки найдены, modprobe ищет другие модули в текущем пути поиска модулей, которые определяют соответствующие символы. Когда modprobe находит эти модули (которые нужны загружаемому модулю), он также загружает их в ядро. Если вместо этого вы используете insmod в этой ситуации, команда завершится неудачно с сообщением «неразрешенные символы», оставленным в системном журнале
источник