Loading a kernel module lets a running Linux system add driver or subsystem support without rebooting, which is useful when enabling hardware features, testing a storage or network component, or activating an optional kernel capability on demand.
Most distributions use the kmod toolset, where modprobe looks up the target module under /lib/modules for the running kernel, applies aliases and modprobe.d rules, and loads any dependencies recorded by depmod. That makes modprobe the normal entry point for routine module loads, while the kernel itself reports lower-level failures such as missing symbols, version mismatches, or signature rejection.
Loading a module requires administrative privileges, and the module must exist for the current kernel rather than just another kernel package installed on disk. Some systems also block runtime loading with kernel.modules_disabled=1, and Secure Boot or other signature-enforcing setups can reject unsigned external modules even when the file is present, so the safest workflow is to inspect the module first, load it, and verify that it actually became active.
$ modinfo dummy filename: /lib/modules/6.8.0-90-generic/kernel/drivers/net/dummy.ko.zst alias: rtnl-link-dummy description: Dummy netdevice driver which discards all packets sent to it license: GPL ##### snipped ##### name: dummy vermagic: 6.8.0-90-generic SMP preempt mod_unload modversions aarch64 signer: Build time autogenerated kernel key
Replace dummy with the module you actually need. If modinfo says the module is not found, the feature may be unavailable for this kernel or built directly into the kernel instead of shipped as a separate loadable module.
$ modprobe --dry-run --verbose dummy insmod /lib/modules/6.8.0-90-generic/kernel/drivers/net/dummy.ko.zst numdummies=0
modprobe accepts a module name or alias, resolves dependencies automatically, and treats hyphens and underscores as equivalent in module names.
$ sudo modprobe dummy
A successful load is usually silent. If the module is already active, modprobe exits successfully without changing anything unless you add --first-time.
$ lsmod Module Size Used by dummy 12288 0 bridge 421888 1 br_netfilter ##### snipped #####
Look for the target module name in the first column. The second column is the module size, and the third is the usage count, which can stay at 0 until a device or another module starts using it.
$ sudo dmesg ##### snipped ##### [ 412.391492] Lockdown: modprobe: Loading of unsigned module is restricted; see man kernel_lockdown.7 ##### snipped #####
Look for messages about unknown symbols, version magic mismatches, lockdown restrictions, or signature rejection. On systemd hosts you can use journalctl -k to read the same kernel log stream.