Яка різниця між insmod і modprobe?


Відповіді:


28

За man insmod:

Більшість користувачів замість цього захоче використовувати modprobe, який розумніший і може впоратися з залежністю модуля.


2
Ах вибачте, пропустив цей рядок.
NES

39

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).


3

modprobeце інтелектуальна команда, вона шукає залежності під час завантаження модуля. Припустимо, якщо я завантажував модуль, у якого символи визначені в якомусь іншому модулі (цей шлях модуля задається всередині основного модуля). Отже, modprobeзавантажує основний модуль і залежний модуль.

Але якщо insmodвін використовується, він не завантажує залежність, а значить, і надасть помилки компіляції, як-от Unresolved symbols. У цьому випадку нам доведеться вручну шукати залежний модуль і потрібно їх завантажувати, щоб усунути помилки.


0

Програму modprobe варто швидко згадати. modprobe, як і insmod, завантажує модуль у ядро. Він відрізняється тим, що він буде дивитись на завантажений модуль, щоб побачити, чи посилається на якісь символи, які не визначені на даний момент у ядрі. Якщо такі посилання знайдені, modprobe шукає інші модулі в поточному шляху пошуку модулів, які визначають відповідні символи. Коли modprobe знаходить ті модулі (які потрібні для завантаження модуля), він також завантажує їх у ядро. Якщо ви використовуєте insmod в цій ситуації, команда не працює з повідомленням "невирішені символи", залишеним у файловому журналі системи

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.