I know this is way late but I also had a “FATAL” error for modprobe of mbcache and felt like the thread needed more info.
For reference one can find info on modules by looking at the code(the '.c’ file) which is always available in the source. If the kernel-source- is not installed, try the <filename>.c on Google.
#> less /usr/src/linux-18.104.22.168-0.2/drivers/ata/ahci.c
#> less /usr/src/linux-22.214.171.124-0.2/fs/mbcache.c
- Filesystem Meta Information Block Cache (mbcache)
- The mbcache caches blocks of block devices that need to be located
- by their device/block number, as well as by other criteria (such
- as the block’s contents).
The “FATAL” is correct but a false warning as the mbcache is a built-in module and the only fatality is that modprobe cannot insert a module into the kernel that already exists in the kernel as a builtin. Ditto for the ahci …
lsmod does not show the mbcache or ahci (& many others) because it is no more than an abbreviated & organized list of
which contains the non built-in kernel modules. I.e., a list of a list of all modules loaded into the running kernel, not a list of all running functions(available via prebuilt modules that were included in the kernel build).
#> cat /proc/modules
will display the unorganized & unabbreviated list. The lsmod is much nicer IMO.
One can verify the built-in status by inspecting the kernel config file(e.g., config-126.96.36.199-0.2-desktop) and searching for the module name. In mine,
(the “y” means it is built and included in the kernel when the kernel is built; a “m” would mean it is built as a module and would have to be loaded into the running kernel to be usable.)
SO, what that all means is that the mbcache and ahci are not needed for the mkinitrd.
Therefore the mbcache and/or ahci can be safely removed from the
line in the
file (if done carefully by root).
Once the mbcache and|or ahci is removed from the INITRD_MODULES one can
a) run mkinitrd,
b) ignore the boot error and wait for next update of the kernel or
c) reinstall the kernel.
I rec’ (b) since the warning is harmless for the system and an update of the kernel will create a new initrd.
The mkinitrd creates filesystem images which are suitable for use as Linux initial ramdisk (initrd) images and there are significant advantages to having some of those modules available for the initial ramdisk. In truth, for some systems some are mandatory for the system to boot. However if the module is already in the kernel, it surely does not need mkinitrd to require it to be loaded via an initrd image requirement.
Lastly, modprobe is pretty smart. If one does
$> sudo /sbin/modprobe -v mbcache
It will return with
thereby telling one that it is a built-in function.
$> sudo /sbin/modprobe -v ahci
$> sudo /sbin/modprobe -v ext3
…and so forth for any built-in module. If one wants to know all the built-in modules for the running kernel, the list is located and listed via
#> sudo less /lib/modules/