介绍
在本实验中,你将学习如何使用 Linux 的 modinfo
命令来探索和排查内核模块(kernel modules)问题。modinfo
命令提供了关于内核模块的详细信息,包括它们的文件名、作者、描述、许可证、依赖项以及可配置参数。这些信息在排查与内核模块相关的问题或试图了解特定模块的功能和配置选项时非常有用。
在本实验中,你将学习如何使用 Linux 的 modinfo
命令来探索和排查内核模块(kernel modules)问题。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
命令来探索内核模块的详细信息。
首先,让我们列出系统中当前加载的所有内核模块:
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
命令来排查与内核模块相关的问题。
首先,尝试加载一个不存在的模块:
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
提供的信息来排查模块问题。