The first thing to try is to boot into Safe Mode, which will clear the dynamic loader shared cache and potentially clear pauses at the blue screen before the system either logs in or presents the log-in window. Booting to Safe Mode just requires holding the Shift key immediately after hearing the boot chimes when starting or restarting your computer.
After this is done, the system will present the log-in window (regardless of whether you have automatic log-in enabled), and since there is no need to log in, you can immediately restart the system.

Though you can use a number of maintenance utilities to clear and rebuild the kernel extensions caches, another approach is to run these commands manually in the Terminal. Doing so ensures you know exactly what commands are being run, and also allows you to customize them if needed.
First ensure the system root is owned by “root” and that the group is set to “admin” by running the following command in the Terminal:

sudo chown root:admin

After this is done, update the prelinked kernel for the system, which will ensure that all previously used kernel extensions are quickly loaded at boot. This will grab any new kernel extensions used for added system hardware and include them when prelinking the kernel.

sudo kextcache -system-prelinked-kernel

After this command is done, rebuild the cache for the kernel extensions by running the following command: