# Linux kernel modules

1. [TL;DR](#tldr)
1. [Load modules on boot](#load-modules-on-boot)
1. [Permanent modules configuration](#permanent-modules-configuration)
1. [Further readings](#further-readings)
   1. [Sources](#sources)

## TL;DR

```sh
# Show what kernel modules are currently loaded.
lsmod

# List all modules built into the currently running kernel.
cat "/lib/modules/$(uname -r)/modules.builtin"

# List all available modules.
find "/lib/modules/$(uname -r)" -type f -name '*.ko*'

# Show information about a module.
modinfo 'module_name'

# List the options set for loaded modules.
systool -v -m 'module_name'

# Show the comprehensive configuration of modules.
modprobe -c
modprobe -c | grep 'module_name'

# List the dependencies of modules or aliases.
# Includes the module itself.
modprobe --show-depends 'module_name'

# Load modules.
modprobe 'module_name'
modprobe 'module_name' 'parameter_1=value' 'parameter_n=value'

# Load modules by file name.
# For those not installed in "/usr/lib/modules/$(uname -r)/".
insmod 'file_name' 'arg_1' 'arg_n'

# Unload modules.
modprobe -r 'module_name'
rmmod 'module_name'
```

## Load modules on boot

If using Systemd, put lists of modules in `.conf` files in the `/etc/modules-load.d/` directory:

```sh
$ cat '/etc/modules-load.d/ddcutil.conf'
i2c-dev
```

## Permanent modules configuration

Write the options in a `.conf` file in `/etc/modprobe.d/`:

```conf
# /etc/modprobe.d/raspi-wifi-workaround.conf
options brcmfmac roamoff=1 feature_disable=0x82000
```

## Further readings

- The [Kernel module][arch wiki kernel module] page in the [Arch wiki]
- The [Kernel modules][gentoo wiki kernel modules] page in the [Gentoo wiki]

### Sources

- [How to load a kernel module automatically at boot time]

<!--
  Reference
  ═╬═Time══
  -->

<!-- Others -->
[arch wiki]: https://wiki.archlinux.org
[arch wiki kernel module]: https://wiki.archlinux.org/title/Kernel_module
[gentoo wiki]: https://wiki.gentoo.org/wiki/Main_Page
[gentoo wiki kernel modules]: https://wiki.gentoo.org/wiki/Kernel_Modules
[how to load a kernel module automatically at boot time]: https://www.cyberciti.biz/faq/linux-how-to-load-a-kernel-module-automatically-at-boot-time/
