Booting Ubuntu or running system maintenance only for the boot splash to pause with red text displaying: “[FAILED] Failed to start Load Kernel Modules” and systemctl status systemd-modules-load.service reporting exit status 1/FAILURE indicates an issue in the early module initialisation phase. In Ubuntu and Debian-based Linux systems, systemd-modules-load parses configuration files in /etc/modules-load.d/ and /etc/modules to load required hardware drivers, network filters, and virtualization modules into the running kernel via modprobe. When a kernel update leaves obsolete DKMS module references, a virtualisation driver is listed without its parent hypervisor, or a typographical error exists in a configuration file, systemd flags the service as failed. This tutorial outlines how to identify the specific failing kernel module, purge obsolete module declarations, and rebuild initramfs.
Why Does systemd-modules-load.service Fail?
The module loader processes static module lists during startup. Primary causes of failure include:
- Obsolete or Removed Kernel Drivers: References to VirtualBox guest additions, proprietary Wi-Fi drivers, or WireGuard modules that were uninstalled but left configuration files behind.
- Typographical Errors in Module Configuration: Syntax errors or non-existent module names inside
/etc/modulesor/etc/modules-load.d/*.conf. - DKMS Compilation Failures: Upgrading to a new Linux kernel version where Dynamic Kernel Module Support (DKMS) failed to compile third-party drivers.
- Kernel Version Mismatches: Running a newer kernel without updating matching packages in
/lib/modules/$(uname -r)/. - Blacklisted Hardware Drivers: A module listed in
/etc/modulesthat is simultaneously blacklisted in/etc/modprobe.d/.
Method 1: Inspect Systemd Journal Logs to Identify the Failing Module
The systemd-modules-load service reports the exact module name that triggered the initialisation error.
- Open your terminal and run the service status command:
systemctl status systemd-modules-load.service - To view detailed error messages from the journal log:
journalctl -u systemd-modules-load.service -b - Scan the output for lines stating:
Failed to find module 'module-name'ormodprobe: FATAL: Module module-name not found in directory /lib/modules/.... - Note the exact name of the missing or failing module.
Method 2: Check and Clean Module Configuration Files
Once you know the failing module name, remove its static declaration from the system configuration folders.
- Inspect the primary system modules file:
sudo nano /etc/modules - If the failing module name is listed there, delete that line or comment it out by adding a
#at the beginning of the line. - Next, search the modular configuration directory for files mentioning the problematic module:
grep -rn "failing-module-name" /etc/modules-load.d/ - Open the identified
.conffile and remove or comment out the invalid module entry. - Save changes and exit nano (Ctrl + O, then Enter, followed by Ctrl + X).
Method 3: Test and Restart the Module Loading Service
Verify whether the service initialises cleanly after removing invalid declarations.
- Restart the systemd module loading service:
sudo systemctl restart systemd-modules-load.service - Verify that the service is now active and green:
sudo systemctl status systemd-modules-load.service
Method 4: Rebuild DKMS Modules and Initramfs
If the missing module is a legitimate driver (such as an NVIDIA GPU driver or ZFS module) that failed compilation during a kernel update:
- Reconfigure DKMS for all installed kernels:
sudo dkms autoinstall - Update your initramfs image to synchronize initial ramdisk drivers:
sudo update-initramfs -u -k all - Reboot your system:
sudo reboot