Loading and Configuration of Kernel Modules
Simply, if modules are not built statically into the kernel, they may be loaded at boot time by init (differs for SysV vs. OpenRC/systemd) or by udev. Modules may be loaded while executing from initrd/initramfs, so they are already present at the time that the change root operation is completed to switch to the newly mounted root filesystem.
The list of files that are significant here:
/etc/modules: (modules(5)) This file is used in old SysV init -based
systems, and is read by the kmod service.
/etc/modules-load.d: (modules-load.d(5)) Files in this directory are read
by OpenRC/systemd. They can be used to load or blacklist modules only--they
cannot be used to set module options, etc. For systemd, the
systemd-modules-load.service(8) reads these configuration files and loads
these modules automatically at runtime. In other words, use these files to
instruct systemd to load a module that would not otherwise be loaded by udev.
/etc/modprobe.d: Files in this directory have all the same functionality
as those in modules-load.d, and more. These files can be used to pass module
parameters, etc. These files configure kmod, so this configuration is used
whether the module is loaded by systemd-modules-load.service, udevd, etc.