Как получить полный список зависимостей модулей ядра во время выполнения - PullRequest
2 голосов
/ 02 ноября 2010

Есть ли способ вывести из командной строки полный список зависимостей модулей ядра, загруженных в ядро ​​во время выполнения?

Позвольте мне немного прояснить мой вопрос.

Что я пытаюсь сделать:

  1. Я получаю список всех загруженных модулей, используя lsmod
  2. Затем удалите / выгрузите загруженные в данный момент модули ядра, запустив цикл. Я использую modprobe -r. Этот шаг не выполняется (очевидно), так как некоторые модули используются. (Я могу переключиться на использование rmmod -r, но не хочу, поскольку это небезопасно и может привести к сбою системы.)
  3. Затем я хочу загрузить модули один за другим.

Это шаг 2, который не выполняется, так как я не могу получить все зависимости модуля перед использованием modprobe -r.

Есть идеи, предложения или комментарии?

Ответы [ 3 ]

4 голосов
/ 21 ноября 2010

Однако lsmod o / p иногда бывает неполным. Также не всегда указываются все модули, зависящие от данного модуля.

То, что вы видите в lsmod в столбце «Используется», - это просто статические зависимости символов, которые вы также можете посмотреть, используя modinfo.

Если, однако, часть кода ядра получает ссылку на модуль с помощью (try_) module_get, вызывающая сторона не будет записана. У ссылок нет владельца (moduleA может передать указатель на moduleB, который затем module_puts it ..), для столбца Used by нечего записывать.

2 голосов
/ 17 июля 2013

Чтобы получить список зависимостей модуля, который будет использоваться modprobe (т. Е. Обычно это полный список, но смотрите ответ пользователя 502515), используйте

$ modprobe --show-depends <module>

Обратите внимание, что эта командапоказывает больше информации, чем строка modinfo depends:, так как она рекурсивно перечисляет зависимости (т.е. зависимости зависимостей).Он также учитывает команды alias в файлах конфигурации modprobe.

Протестировано с использованием:

$ modprobe -V
kmod version 14
2 голосов
/ 02 ноября 2010

man lsmod: lsmod - тривиальная программа, которая прекрасно форматирует содержимое / proc / modules, показывая, какие модули ядра загружены в данный момент.

Отредактировано: см. Также: depmod -n

...