Linux modinfo 命令实用示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用 Linux 的 modinfo 命令来探索和排查内核模块(kernel modules)问题。modinfo 命令提供了关于内核模块的详细信息,包括它们的文件名、作者、描述、许可证、依赖项以及可配置参数。这些信息在排查与内核模块相关的问题或试图了解特定模块的功能和配置选项时非常有用。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/uname("System Information Displaying") subgraph Lab Skills linux/cat -.-> lab-422819{{"Linux modinfo 命令实用示例"}} linux/uname -.-> lab-422819{{"Linux modinfo 命令实用示例"}} end

理解 modinfo 命令

在这一步中,我们将探索 Linux 的 modinfo 命令,它提供了关于内核模块(kernel modules)的详细信息。modinfo 命令是理解和排查内核模块问题的有用工具。

首先,让我们检查 Ubuntu 22.04 系统上 modinfo 命令的版本:

modinfo --version

示例输出:

modinfo version 2.6.32-504.16.2.el6

modinfo 命令可用于显示特定内核模块的信息。例如,要获取 ext4 模块的信息,我们可以运行:

sudo modinfo ext4

示例输出:

filename:       /lib/modules/5.15.0-1023-aws/kernel/fs/ext4/ext4.ko
author:         Remy Card, Stephen Tweedie, Andrew Morton, Jakub Jelinek, et al.
description:    Fourth Extended Filesystem
license:        GPL
alias:          fs-ext4
alias:          ext4
alias:          ext3
alias:          ext2
depends:        mbcache,jbd2
retpoline:      Y
name:           ext4
vermagic:       5.15.0-1023-aws SMP mod_unload modversions
parm:           abort:behaviour when a metadata write fails (int)
parm:           barrier:default barrier usage (int)
parm:           dioread_nolock:use delalloc with no lock (int)
parm:           max_dir_size_kb:max size of directories (unsigned long)
parm:           min_batch_time:min time between delayed allocation attempts (us) (int)
parm:           max_batch_time:max time between delayed allocation attempts (us) (int)

输出提供了关于 ext4 模块的详细信息,包括文件名、作者、描述、许可证、别名、依赖项以及可配置的各种参数。

你可以使用 modinfo 命令来探索系统中安装的任何内核模块的信息。这在排查与内核模块相关的问题或试图了解特定模块的功能和配置选项时非常有用。

使用 modinfo 探索模块信息

在这一步中,我们将深入探讨如何使用 modinfo 命令来探索内核模块的详细信息。

首先,让我们列出系统中当前加载的所有内核模块:

sudo modinfo -F filename -a

示例输出:

/lib/modules/5.15.0-1023-aws/kernel/drivers/acpi/acpi_power_meter.ko
/lib/modules/5.15.0-1023-aws/kernel/drivers/acpi/acpi_thermal_rel.ko
/lib/modules/5.15.0-1023-aws/kernel/drivers/acpi/battery.ko
/lib/modules/5.15.0-1023-aws/kernel/drivers/acpi/button.ko
/lib/modules/5.15.0-1023-aws/kernel/drivers/acpi/ec_sys.ko
/lib/modules/5.15.0-1023-aws/kernel/drivers/acpi/fan.ko
/lib/modules/5.15.0-1023-aws/kernel/drivers/acpi/video.ko

-F filename 选项告诉 modinfo 仅显示模块的文件名,而 -a 选项则列出所有模块。

现在,让我们探索特定模块的详细信息,例如 ext4 模块:

sudo modinfo ext4

示例输出:

filename:       /lib/modules/5.15.0-1023-aws/kernel/fs/ext4/ext4.ko
author:         Remy Card, Stephen Tweedie, Andrew Morton, Jakub Jelinek, et al.
description:    Fourth Extended Filesystem
license:        GPL
alias:          fs-ext4
alias:          ext4
alias:          ext3
alias:          ext2
depends:        mbcache,jbd2
retpoline:      Y
name:           ext4
vermagic:       5.15.0-1023-aws SMP mod_unload modversions
parm:           abort:behaviour when a metadata write fails (int)
parm:           barrier:default barrier usage (int)
parm:           dioread_nolock:use delalloc with no lock (int)
parm:           max_dir_size_kb:max size of directories (unsigned long)
parm:           min_batch_time:min time between delayed allocation attempts (us) (int)
parm:           max_batch_time:max time between delayed allocation attempts (us) (int)

此输出提供了关于 ext4 模块的详细信息,包括文件名、作者、描述、许可证、别名、依赖项以及可配置的各种参数。

你可以使用 modinfo 命令来探索系统中安装的任何内核模块的信息。这在排查与内核模块相关的问题或试图了解特定模块的功能和配置选项时非常有用。

使用 modinfo 排查模块问题

在这最后一步中,我们将学习如何使用 modinfo 命令来排查与内核模块相关的问题。

首先,尝试加载一个不存在的模块:

sudo modprobe non_existent_module

示例输出:

modprobe: FATAL: Module non_existent_module not found in directory /lib/modules/5.15.0-1023-aws

如你所见,modprobe 命令无法加载 non_existent_module,因为该模块在系统中不存在。

现在,让我们尝试使用 modinfo 命令获取更多关于此问题的信息:

sudo modinfo non_existent_module

示例输出:

modinfo: ERROR: Module non_existent_module not found.

modinfo 命令也无法找到关于 non_existent_module 的任何信息,确认该模块在系统中不存在。

如果你遇到与特定内核模块相关的问题,可以使用 modinfo 命令来排查问题。例如,如果某个模块无法正确加载,你可以使用 modinfo 检查模块的依赖项、参数和其他相关信息,以确定问题的根源。

让我们尝试一个真实模块的示例,例如 ext4 模块:

sudo modinfo ext4

示例输出:

filename:       /lib/modules/5.15.0-1023-aws/kernel/fs/ext4/ext4.ko
author:         Remy Card, Stephen Tweedie, Andrew Morton, Jakub Jelinek, et al.
description:    Fourth Extended Filesystem
license:        GPL
alias:          fs-ext4
alias:          ext4
alias:          ext3
alias:          ext2
depends:        mbcache,jbd2
retpoline:      Y
name:           ext4
vermagic:       5.15.0-1023-aws SMP mod_unload modversions
parm:           abort:behaviour when a metadata write fails (int)
parm:           barrier:default barrier usage (int)
parm:           dioread_nolock:use delalloc with no lock (int)
parm:           max_dir_size_kb:max size of directories (unsigned long)
parm:           min_batch_time:min time between delayed allocation attempts (us) (int)
parm:           max_batch_time:max time between delayed allocation attempts (us) (int)

输出提供了关于 ext4 模块的详细信息,包括其依赖项、参数和其他相关细节。这些信息在排查与 ext4 模块或系统中其他内核模块相关的问题时非常有用。

总结

在本实验中,我们探索了 Linux 的 modinfo 命令,它提供了关于内核模块(kernel modules)的详细信息。我们学习了如何使用 modinfo 来了解特定内核模块的特性,例如其文件名、作者、描述、许可证、别名、依赖项以及各种可配置参数。该命令在排查与内核模块相关的问题或试图了解特定模块的功能和配置选项时非常有用。我们还探讨了如何通过 modinfo 提供的信息来排查模块问题。

Linux 命令速查表