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

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

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

решение1

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) также распознаются, но поскольку эти модули загружаются по умолчанию, нет смысла в modprobing такого рода модулей.

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

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

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

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

решение2

За man insmod:

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

решение3

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

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

решение4

Команда modprobe предлагает больше возможностей, чем более базовые утилиты insmod и rmmod. modprobe разумно добавляет или удаляет модуль из ядра Linux. Обратите внимание, что для удобства нет разницы между _ и - в именах модулей (выполняется автоматическое преобразование подчеркивания). modprobe ищет в каталоге модулей /lib/modules/ uname -rвсе модули и другие файлы, за исключением дополнительных файлов конфигурации в каталоге /etc/modprobe.d (некоторые дистрибутивы используют вместо этого файл /etc/modprobe.conf).

узнать больше

Связанный контент