How to list loaded kernel modules in Linux

Listing loaded kernel modules shows which loadable drivers and kernel subsystems the running Linux kernel is using right now. That makes it easier to confirm hardware support, check whether a feature driver is active, and gather facts before loading, unloading, or troubleshooting module state.

In Linux, lsmod formats the live module table that the kernel exposes through /proc/modules. It shows the module name, the module size, and the current Used by count together with any dependent modules that still hold a reference.

Listing modules is a read-only check, but the visible results still depend on the running kernel rather than just the userland package set. Containers show the host kernel's module table, some minimal images omit lsmod until the kmod package is installed, and drivers built directly into the kernel image do not appear in lsmod because they were not loaded as separate modules.

Steps to list loaded kernel modules in Linux:

  1. Show the current loaded-module table with lsmod.
    $ lsmod
    Module                  Size  Used by
    qrtr                   49152  2
    snd_hda_codec_generic 114688  1
    uvcvideo              143360  0
    snd_hda_intel          57344  0
    snd_intel_dspcfg       20480  1 snd_hda_intel
    snd_hda_codec         208896  2 snd_hda_codec_generic,snd_hda_intel
    ##### snipped #####

    The first column is the module name, Size is the module footprint in bytes, and Used by shows the current reference count followed by dependent module names when the kernel reports them.

  2. Read the raw kernel records from /proc/modules when you need the data behind the formatted lsmod view.
    $ cat /proc/modules
    qrtr 49152 2 - Live 0x0000000000000000
    snd_hda_codec_generic 114688 1 - Live 0x0000000000000000
    uvcvideo 143360 0 - Live 0x0000000000000000
    snd_hda_intel 57344 0 - Live 0x0000000000000000
    snd_intel_dspcfg 20480 1 snd_hda_intel, Live 0x0000000000000000
    ##### snipped #####

    lsmod is a formatted view of /proc/modules, so both commands report the same loaded-module set.

  3. Inspect the module directory in sysfs after you identify a module name from lsmod.
    $ ls /sys/module/loop
    parameters
    uevent

    If the matching directory exists under /sys/module, the running kernel exposes that module or built-in feature through sysfs. When the same name also appears in lsmod, it is loaded as a separate module. If it exists under /sys/module but never appears in lsmod, the feature may be built into the kernel image instead of loaded from a module file.