侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux get_module命令教程:如何获取内核模块的信息(附实例详解和注意事项)

Linux get_module命令介绍

get_module命令是get module的缩写,它用来获取内核模块的信息,包括模块的名称、大小、依赖关系、状态、参数等。get_module命令可以帮助你了解内核模块的功能和配置,以及检查模块是否正常工作。

Linux get_module命令适用的Linux版本

get_module命令适用于大多数Linux发行版,如Ubuntu、Debian、Fedora、CentOS等。如果你的Linux系统没有安装get_module命令,你可以使用以下命令来安装:

  • 对于基于Debian的系统,如Ubuntu,你可以使用apt-get命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get update
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install kmod
  • 对于基于Red Hat的系统,如Fedora,你可以使用yum命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum update
[linux@bashcommandnotfound.cn ~]$ sudo yum install kmod
  • 对于基于Arch的系统,如Manjaro,你可以使用pacman命令:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -Syu
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S kmod

Linux get_module命令的基本语法

get_module命令的基本语法格式如下:

get_module [选项] [模块名]

其中,模块名是要查询的内核模块的名称,可以是完整的名称,也可以是部分的名称。如果不指定模块名,get_module命令会显示所有已加载的内核模块的信息。

Linux get_module命令的常用选项或参数说明

get_module命令有以下常用的选项或参数:

选项参数说明
-a显示所有内核模块的信息,包括未加载的模块
-d显示模块的依赖关系,即哪些模块依赖于该模块,以及该模块依赖于哪些模块
-f强制刷新模块的信息,即从内核重新读取模块的信息,而不是从缓存中读取
-n不显示模块的路径,只显示模块的名称
-p显示模块的参数,即模块在加载时可以接受的选项和值
-s显示模块的大小,以字节为单位
-t显示模块的状态,即模块是已加载、未加载还是正在加载
-v显示模块的版本,即模块的版本号和签名

Linux get_module命令的实例

以下是一些使用get_module命令的实例:

实例1:显示所有已加载的内核模块的信息

如果不指定任何选项和参数,get_module命令会显示所有已加载的内核模块的信息,包括模块的名称、大小、依赖关系、状态、参数等。例如:

[linux@bashcommandnotfound.cn ~]$ get_module
Module                  Size  Used by
nls_iso8859_1          16384  1
nls_cp437              20480  1
vfat                   24576  1
fat                    86016  1 vfat
usb_storage            81920  2 uas
uas                    28672  0
usbhid                 65536  0
hid_generic            16384  0
hid                   143360  2 usbhid,hid_generic
snd_hda_codec_hdmi     73728  1
snd_hda_codec_realtek   135168  1
snd_hda_codec_generic    98304  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_intel          57344  4
snd_intel_dspcfg       28672  1 snd_hda_intel
snd_hda_codec         167936  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core          106496  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               147456  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
snd_timer              45056  1 snd_pcm
snd                    98304  16 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm
soundcore              16384  1 snd
...

输出的结果可能会很长,你可以使用分页命令如less或more来查看,或者使用重定向命令如>或>>来保存到文件中。

实例2:显示指定的内核模块的信息

如果指定一个或多个模块名,get_module命令会显示这些模块的信息,而不是所有模块的信息。例如,如果你想查看usb_storage模块的信息,你可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ get_module usb_storage
Module                  Size  Used by
usb_storage            81920  2 uas

你可以看到,usb_storage模块的大小是81920字节,它被uas模块使用。你也可以指定多个模块名,用空格隔开,例如:

[linux@bashcommandnotfound.cn ~]$ get_module usb_storage hid
Module                  Size  Used by
usb_storage            81920  2 uas
hid                   143360  2 usbhid,hid_generic

你可以看到,usb_storage模块和hid模块的信息都被显示出来了。

实例3:显示所有内核模块的信息,包括未加载的模块

如果你想查看所有内核模块的信息,不管它们是否已经加载,你可以使用-a选项,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -a
Module                  Size  Used by    Status
nls_iso8859_1          16384  1         live
nls_cp437              20480  1         live
vfat                   24576  1         live
fat                    86016  1 vfat     live
usb_storage            81920  2 uas     live
uas                    28672  0         live
...

实例4:显示模块的依赖关系

如果你想查看模块的依赖关系,即哪些模块依赖于该模块,以及该模块依赖于哪些模块,你可以使用-d选项,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -d usb_storage
Module                  Size  Used by
usb_storage            81920  2 uas
uas                    28672  0

你可以看到,usb_storage模块被uas模块使用,而uas模块没有被其他模块使用。你也可以指定多个模块名,用空格隔开,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -d usb_storage hid
Module                  Size  Used by
usb_storage            81920  2 uas
hid                   143360  2 usbhid,hid_generic
uas                    28672  0
usbhid                 65536  0
hid_generic            16384  0

你可以看到,usb_storage模块和hid模块的依赖关系都被显示出来了。

实例5:强制刷新模块的信息

如果你想从内核重新读取模块的信息,而不是从缓存中读取,你可以使用-f选项,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -f usb_storage
Module                  Size  Used by
usb_storage            81920  2 uas

这样,你可以确保获取到最新的模块的信息,而不是可能过时的缓存的信息。

实例6:不显示模块的路径,只显示模块的名称

如果你不想看到模块的路径,只想看到模块的名称,你可以使用-n选项,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -n usb_storage
usb_storage

你可以看到,只有模块的名称被显示出来了,而没有模块的路径。你也可以指定多个模块名,用空格隔开,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -n usb_storage hid
usb_storage
hid

你可以看到,只有模块的名称被显示出来了,而没有模块的路径。

实例7:显示模块的参数

如果你想查看模块的参数,即模块在加载时可以接受的选项和值,你可以使用-p选项,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -p usb_storage
Module                  Size  Used by    Parameters
usb_storage            81920  2 uas     quirks=,removable=,delay_use=,sense_type=

你可以看到,usb_storage模块有四个参数,分别是quirks、removable、delay_use和sense_type,它们都有默认的值,你可以在加载模块时修改它们的值,例如:

[linux@bashcommandnotfound.cn ~]$ sudo modprobe usb_storage removable=1

这样,你可以让usb_storage模块把所有的USB存储设备都当作可移动的,而不是根据设备的报告来判断。你也可以指定多个模块名,用空格隔开,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -p usb_storage hid
Module                  Size  Used by    Parameters
usb_storage            81920  2 uas     quirks=,removable=,delay_use=,sense_type=
hid                   143360  2 usbhid,hid_generic debug_events=0,debug_activate=0,ignore_special_drivers=0,ignore_legacy_drivers=0

你可以看到,usb_storage模块和hid模块的参数都被显示出来了。

实例8:显示模块的大小

如果你想查看模块的大小,以字节为单位,你可以使用-s选项,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -s usb_storage
Module                  Size
usb_storage            81920

你可以看到,usb_storage模块的大小是81920字节。你也可以指定多个模块名,用空格隔开,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -s usb_storage hid
Module                  Size
usb_storage            81920
hid                   143360

你可以看到,usb_storage模块和hid模块的大小都被显示出来了。

实例9:显示模块的状态

如果你想查看模块的状态,即模块是已加载、未加载还是正在加载,你可以使用-t选项,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -t usb_storage
Module                  Status
usb_storage            live

你可以看到,usb_storage模块的状态是live,即已加载。你也可以指定多个模块名,用空格隔开,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -t usb_storage hid
Module                  Status
usb_storage            live
hid                   live

你可以看到,usb_storage模块和hid模块的状态都是live,即已加载。

实例10:显示模块的版本

如果你想查看模块的版本,即模块的版本号和签名,你可以使用-v选项,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -v usb_storage
Module                  Version
usb_storage            1.0.0 (GPL)

你可以看到,usb_storage模块的版本是1.0.0,它的许可证是GPL。你也可以指定多个模块名,用空格隔开,例如:

[linux@bashcommandnotfound.cn ~]$ get_module -v usb_storage hid
Module                  Version
usb_storage            1.0.0 (GPL)
hid                   1.1.1 (GPL)

你可以看到,usb_storage模块和hid模块的版本都被显示出来了。

Linux get_module命令的注意事项

以下是一些使用get_module命令的注意事项:

  • 如果你输入的模块名不存在或拼写错误,get_module命令会提示你bash: get_module: command not found,这时你可以检查你的输入是否正确,或者使用tab键来自动补全模块名。
  • 如果你想加载或卸载模块,你可以使用modprobe或rmmod命令,而不是get_module命令,get_module命令只能查询模块的信息,不能修改模块的状态。
  • 如果你想查看模块的源代码或文档,你可以在/usr/src/linux目录下找到对应的文件,例如,usb_storage模块的源代码文件是/usr/src/linux/drivers/usb/storage/usb.c,文档文件是/usr/src/linux/Documentation/usb/storage.txt。

Linux get_module命令的相关命令

以下是一些和get_module命令相关的命令,你可以点击链接查看更多的介绍和实例:

0

评论区