You can find out really easily with one simple command:

systemd-analyze

Which will output something like:

Startup finished in 9.708s (firmware) + 3.692s (loader) + 46.909s (kernel) + 13.614s (userspace) = 1min 13.924s
graphical.target reached after 12.063s in userspace

So as you can see, my laptop takes ages to boot. But why is that? We can find out who’s to blame with:

systemd-analyze blame

Which will output a list of things and how long it took to start them, with the longest at the top.

Something like this:

         11.796s systemd-cryptsetup@sdcard_crypt.service
          7.629s NetworkManager-wait-online.service
          1.755s docker.service
          1.556s dev-mapper-mint\x2d\x2dvg\x2droot.device
          1.459s snapd.service
          1.101s vboxdrv.service
          1.090s dev-loop3.device
          1.051s vmware.service
           918ms tlp.service
           824ms vmware-USBArbitrator.service
           512ms udisks2.service
           473ms networkd-dispatcher.service
           464ms systemd-journal-flush.service
           363ms ufw.service
           361ms ubuntu-system-adjustments.service
           351ms systemd-logind.service
           327ms NetworkManager.service
           319ms ModemManager.service
           312ms upower.service
           310ms dev-loop1.device
           302ms dev-loop0.device
           244ms loadcpufreq.service
           224ms networking.service

As you can see, in my case what’s taking up the most time is to unlock my encrypted SD card. The next thing being the Network Manager. And so forth. So now at least I know what to look at to try to speed boot times up.

For example, I could try to not auto-unlock and mount my SD card at boot and only mount it manually when I need it.

I hope this gave you a hint on how to troubleshoot long boot times!