Все про Linux/Unix Command depmod

Depmod обробляє описи залежностей для завантажуваних ядро модулі.

Синопсис

depmod [-aA] [-ehnqrsuvV] [-C конфігураційний файл] [-F kernelsyms] [-b базовий каталог] [примусова_версіяdepmod [-enqrsuv] [-F kernelsyms] module1.o module2.o...

Опис

The depmod і modprobe утиліти призначені для створення a Linux модульне ядро, доступне для керування всіма користувачами, адміністраторами та розповсюджувачами.

Depmod створює файл залежностей, подібний до «Makefile», на основі символів, які він знаходить у наборі модулів, згаданих у командному рядку, або з каталогів, зазначених у файлі конфігурації. Цей файл залежностей згодом використовується modprobe щоб автоматично завантажувати правильний модуль або стек модулів.

Команда Linux depmod

Нормальне використання depmod полягає в тому, щоб включити рядок.

/sbin/depmod -a

десь у rc-файлах в /etc/rc.d, так що правильні залежності модуля будуть доступні відразу після завантаження системи. Якщо ви працюєте з більш повним дистрибутивом, таким як Ubuntu, Debian або Fedora, це буде зроблено за вас. Зверніть увагу, що варіант 

 тепер необов'язковий. Для цілей завантаження опція -q може бути більш доречним, оскільки це змушує depmod мовчати про нерозв'язані символи. Якщо ви хочете побачити, що саме додано, скористайтеся -v switch, щоб виконати команду багатослівно.

Також можна створити файл залежностей відразу після компіляції нового ядра. Якщо ти зробиш "depmod -a 2.2.99" коли ви вперше скомпілювали ядро ​​2.2.99 і його модулі, але все ще працювали, наприклад, 2.2.98, файл буде створено в правильному місці. У цьому випадку, однак, залежність від ядра не буде гарантовано правильною. Перегляньте варіанти , -C і -б вище для отримання додаткової інформації про це.

Побудовуючи зв’язок між модулями та символами, експортованими іншими модулями,depmod не враховує статус GPL модулів або експортованих символів. Тобто depmod не позначатиме помилку, якщо модуль без ліцензії, сумісної з GPL, посилається лише на символ GPL (EXPORT_SYMBOL_GPL в ядрі). однак, insmod відмовиться розв’язувати лише символи GPL для модулів, які не підтримують GPL, тому фактичне завантаження не вийде.

Параметри

, --все

Пошук модулів у всіх каталогах, зазначених у (необов’язковому) файлі конфігурації/etc/modules.conf.

, --швидко

Порівняйте часові позначки файлів і, якщо потрібно, дійте так depmod -a. Ця опція оновлює файл залежностей, лише якщо щось змінилося.

, -- помилки

Показати всі нерозв’язані символи для кожного модуля.

-h, --допомога

Відобразіть список параметрів і негайно вийдіть.

-n, --показати

Напишіть файл залежності на stdout замість у файлі /lib/modules дерево.

-q, --спокійно

Скажіть depmod мовчати і не скаржитися на відсутні символи.

-r, --корінь

Деякі користувачі компілюють модулі під некорневим ідентифікатором користувача, а потім встановлюють модулі як root. Цей процес може залишити модулі, які належать некорневому ідентифікатору користувача, навіть якщо каталог модулів належить root. Якщо скомпрометований некорневий ідентифікатор користувача, зловмисник може перезаписати існуючі модулі, що належать цьому ідентифікатору користувача, і використати цей доступ для завантаження до root доступу.

За замовчуванням modutils відхиляє спроби використовувати модуль, який не належить root. Уточнення-r придушить помилку та дозволить root завантажувати модулі, які не належать root.

Використання -r є серйозною проблемою безпеки і не рекомендується.

-s, --syslog

Записувати всі повідомлення про помилки через демон syslog замість stderr.

-u, --невирішена-помилка

depmod 2.4 не встановлює код повернення, якщо є нерозв'язані символи. Деякі дистрибутиви хочуть мати ненульовий код повернення в modutils 2.4, але ця зміна може спричинити проблеми для користувачів, які очікують старої поведінки. Якщо ви хочете отримати ненульовий код повернення в depmod 2.4, вкажіть -u. depmod 2.5 мовчки ігнорує -u прапорець і завжди даватиме ненульовий код повернення для нерозв’язаних символів.

-v, --багатослівний

Показуйте назву кожного модуля під час його обробки.

, -- версія

Відобразити версію depmod.

Управління розподілами

Наступні параметри корисні для людей, які керують розподілами:

-б базовий каталог, --basedir базовий каталог

Якщо дерево каталогів /lib/modules що містить піддерева модулів, переміщується в інше місце, щоб обробляти модулі для іншого середовища,  Параметр вказує depmod, де знайти переміщене зображення /lib/modules дерево. Посилання на файл у створеному вихідному файлі depmod, модулі.деп, не буде містити базовий каталог шлях. Це означає, що коли дерево файлів повертається з basedirectory/lib/modules в /lib/modules в остаточному розподілі всі посилання будуть правильними.

-C конфігураційний файл, --config конфігураційний файл

Використовуйте файл configfile замість /etc/modules.conf. Змінна середовища MODULECONF також можна використовувати для вибору іншого конфігураційного файлу за замовчуванням /etc/modules.conf (або/etc/conf.modules (не підтримується)).

Коли змінна середовища UNAME_MACHINE встановлено, modutils використовуватиме його значення замість машинного поля з системного виклику uname(). Це в основному використовується, коли ви збираєте 64-розрядні модулі в 32-розрядному просторі користувача або навпаки, встановіть UNAME_MACHINE до типу модулів, що будуються. Поточні modutils не підтримують режим повної перехресної збірки для модулів, він обмежений вибором між 32 і 64 бітними версіями архітектури хоста.

-F kernelsyms,--файли kernelsyms

Під час створення файлів залежностей для ядра, відмінного від поточного ядра, це важливо depmod використовує правильний набір символів ядра для вирішення посилань ядра в кожному модулі. Ці символи можуть бути як копією System.map з іншого ядра або копію виводу з /proc/ksyms. Якщо ваше ядро ​​використовує версійні символи, найкраще використовувати копію файлу /proc/ksyms вихід, оскільки цей файл містить версії символів символів ядра. Однак ви можете використовувати a System.map навіть із версійними символами.

Конфігурація

Поведінка depmod і modprobe можна налаштувати за допомогою (необов’язкового) файлу конфігурації/etc/modules.conf. Побачити modprobe(8) і modules.conf(5) для повного опису.

Стратегія

Кожен раз, коли ви компілюєте нове ядро, команда "зробити modules_install" створить новий каталог, але не змінить значення за замовчуванням.

Коли ви отримуєте модуль, не пов’язаний з дистрибутивом ядра, ви повинні розмістити його в одному з незалежних від версії каталогів під /lib/modules.

Це стратегія за замовчуванням, яку можна змінити в /etc/modules.conf.

Використовувати чоловіккоманда (% чоловік), щоб побачити, як команда використовується на вашому комп’ютері.