Команда modinfo позволяет использовать утилиту с соответствующим именем для получения информации об указанном модуле ядра Linux. Ядро Linux является монолитным, но поддерживает модули, в рамках которых содержится код для реализации ряда его функций и драйверов устройств. В процессе компиляции ядра определенный машинный код может либо включаться в состав самого ядра, либо включаться в состав модулей, которые подгружаются ядром при необходимости без перезагрузки системы. Пользователь также может получить список всех загруженных модулей с помощью команды lsmod и загрузить любой модуль с помощью команды insmod или modprobe. Сами файлы модулей обычно расположены в директории /lib/modules/. Модули поддерживают дополнительные параметры, список которых является наиболее ценной информацией, выводящейся рассматриваемой утилитой. Кроме того, утилита позволяет получить путь к файлу модуля, информацию о его лицензии, имя его автора, список требуемых для его корректной работы модулей, а также список идентификаторов совместимого с ним оборудования и другую информацию.
Базовый синтаксис команды выглядит следующим образом:
$ modinfo [параметры] имя-модуля-или-путь-к-файлу
Утилита поддерживает ряд параметров, наиболее важными из которых являются параметр -F, позволяющий указать имя интересующего поля, -k, позволяющий работать с произвольной версией ядра Linux, а также параметры -a, -d, -l, -p и -n, позволяющие вывести лишь имя автора модуля (поле author), описание его назначения (поле description), информацию о его лицензии (поле license), список его параметров (список полей parm) и имя его файла (поле file name) соответственно.
Для вывода информации о модуле ядра достаточно использовать утилиту modinfo, указав имя интересующего модуля. Сам модуль не обязан быть загружен ядром:
$ modinfo dvb_core filename: /lib/modules/5.19.0-32-generic/kernel/drivers/media/dvb-core/dvb-core.ko license: GPL author: Marcus Metzler, Ralph Metzler, Holger Waechtler description: DVB Core Driver srcversion: CF8DCFB8B0F072DBB4E0EA9 depends: mc retpoline: Y intree: Y name: dvb_core vermagic: 5.19.0-32-generic SMP preempt mod_unload modversions sig_id: PKCS#7 signer: Build time autogenerated kernel key sig_key: 03:C5:B1:04:49:5B:AB:31:68:50:F6:CB:27:16:60:B6:2F:36:0E:38 sig_hashalgo: sha512 signature: 21:5B:AE:74:A9:F7:6F:2F:CD:03:5D:2A:51:76:01:50:AF:CE:4E:EE: 55:73:99:DD:BB:38:B3:57:20:F7:5F:99:89:20:20:FB:67:F5:2C:9B: 28:BF:CA:8F:55:8C:DC:65:C1:94:C9:AF:C3:5F:4E:B4:1E:89:BC:37: B1:80:78:3B:07:89:58:38:AC:3C:36:52:BC:9A:BB:56:11:37:FA:DD: 10:95:48:E4:14:57:A2:AE:47:F0:97:AE:29:C8:19:6E:63:D3:97:C9: D1:86:EB:12:78:AE:5E:16:BC:6D:78:EF:07:E8:44:A8:C4:E1:59:8A: DD:CB:5C:C6:C3:0D:6E:52:C4:78:90:EB:66:F2:8E:E6:CC:18:B2:1A: 5A:53:A2:03:91:9D:7E:2F:3B:B3:26:FA:EF:38:B3:A3:54:A8:5F:5E: 42:28:F5:04:07:2D:F8:A9:59:49:03:66:99:6E:63:09:0B:5B:00:9D: 15:59:47:D8:E9:DB:16:56:40:E3:38:F4:FE:A5:59:F9:F6:6C:70:88: A2:68:25:A2:BD:0A:41:E6:CB:63:46:78:8C:25:EB:C0:98:F8:E0:17: 44:A9:B2:27:B1:E0:43:19:BA:F0:DC:90:E2:CE:1D:1A:99:2F:6C:F5: 78:1F:D0:F9:5D:BD:2D:E2:95:F1:85:7B:1F:8D:2A:23:34:41:09:AA: AB:BD:30:08:EF:CE:79:A3:D5:D6:5B:F5:44:45:06:71:4C:28:C5:D2: CC:43:35:DE:46:9C:EA:CD:DA:CD:06:3E:79:D1:34:E1:2C:1F:C1:72: 8F:A8:FE:F1:90:09:48:3D:C9:DF:12:47:F9:E4:1A:EC:C0:16:BE:95: 6F:E9:94:8C:FD:29:3D:72:1E:F3:9C:37:99:6E:5C:5A:B8:9E:1A:27: FA:5F:D2:C7:9A:45:01:0F:9B:99:BF:D4:A2:D4:E4:DF:B0:BA:77:F7: 4B:79:D1:2D:48:CE:C7:98:EC:7C:A3:53:9C:7A:67:BD:67:C7:B7:71: 64:61:63:FF:51:4E:1D:57:D2:AF:6F:92:A4:FC:49:E3:08:E0:44:AF: 9B:F9:08:CD:C3:C3:2D:59:35:44:3A:8A:C0:82:CA:7A:63:5F:A9:5F: 77:72:76:3A:2E:12:61:0D:B2:64:A2:17:59:68:FE:BA:F7:5A:5C:EE: B7:BF:A6:21:65:65:F0:CE:B5:80:63:34:1D:6B:8B:F2:9B:9C:5E:15: 45:C5:D4:3F:21:49:E6:8C:BF:57:DB:D0:8C:9A:F7:36:A9:C0:2F:0C: DA:83:FD:CC:0D:32:1F:7C:55:98:E3:44:B6:2D:D8:D4:59:4A:39:BC: 6D:75:63:DA:3B:BC:41:9B:07:75:4F:D2 parm: frontend_debug:Turn on/off frontend core debugging (default:off). (int) parm: dvb_shutdown_timeout:wait shutdown_timeout seconds after close() before suspending hardware (int) parm: dvb_force_auto_inversion:0: normal (default), 1: INVERSION_AUTO forced always (int) parm: dvb_override_tune_delay:0: normal (default), >0 => delay in milliseconds to wait for lock after a tune attempt (int) parm: dvb_powerdown_on_sleep:0: do not power down, 1: turn LNB voltage off on sleep (default) (int) parm: dvb_mfe_wait_time:Wait up to mfe_wait_time seconds on open() for multi-frontend to become available (default:5 seconds) (int) parm: cam_debug:enable verbose debug messages (int) parm: dvb_demux_tscheck:enable transport stream continuity and TEI check (int) parm: dvb_demux_speedcheck:enable transport stream speed check (int) parm: dvb_demux_feed_err_pkts:when set to 0, drop packets with the TEI bit set (1 by default) (int) parm: debug:Turn on/off debugging (default:off). (int) parm: dvbdev_debug:Turn on/off device debugging (default:off). (int)
Это информация о модуле dvb_core. Из вывода видно, что модуль является драйвером для DVB-устройств, зависит от модуля mc и поддерживает такие параметры, как frontend_debug, dvb_shutdown_timeout, dvb_force_auto_inversion, dvb_override_tune_delay, dvb_powerdown_on_sleep, dvb_mfe_wait_time, cam_debug, dvb_demux_tscheck, dvb_demux_speedcheck, dvb_demux_feed_err_pkts, debug и dvbdev_debug. Типы значений этих параметров приводятся в скобках и в нашем случае это int. Вообще, значения параметров могут иметь такие типы, как byte (байт), short (короткое целочисленное значение, 2 байта), ushort (короткое беззнаковое целочисленное значение, 2 байта), int (целочисленное значение, 4 байта), uint (беззнаковое целочисленное значение, 4 байта), long (длинное целочисленное значение, 8 байт), ulong (длинное беззнаковое целочисленное значение, 8 байт), charp (массив символов, строка), bool (логическое значение) и invbool (инвертированное целочисленное значение). Если необходимо передавать несколько значений, будет использован префикс array of, например, array of charp (массив строк).
Если вас интересует модуль из состава той версии ядра, которая не используется в данный момент, вы можете воспользоваться параметром -k:
$ modinfo -k 5.15.0-60-generic dvb_core filename: /lib/modules/5.15.0-60-generic/kernel/drivers/media/dvb-core/dvb-core.ko license: GPL author: Marcus Metzler, Ralph Metzler, Holger Waechtler description: DVB Core Driver srcversion: 0695B2A0E9C2A20F55E408E depends: mc retpoline: Y intree: Y name: dvb_core vermagic: 5.15.0-60-generic SMP mod_unload modversions …
Очевидно, в данном случае выведена информация о модуле из состава ядра Linux версии 5.15.0-60-generic, а не 5.19.0-32-generic, как это было ранее.