Play with systemd services. You can see the services which takes much time during boot with the command systemd-analyze blame and systemd-analyze critical-chain. Remove/uninstall services that you don’t need. With this I am able to boot under 3 seconds on Rock 4B+ (on EMMC). On Raspberry Pi 3B+, I was able to get boot time around 7 secs with this procedure.
graphical.target @2.247s
└─multi-user.target @2.247s
└─getty.target @2.247s
└─[email protected] @2.246s
└─systemd-user-sessions.service @2.216s +18ms
└─network.target @2.212s
└─NetworkManager.service @1.685s +526ms
└─dbus.service @1.668s
└─basic.target @1.660s
└─sockets.target @1.660s
└─ssh.socket @1.659s
└─sysinit.target @1.642s
└─systemd-timesyncd.service @1.447s +194ms
└─systemd-tmpfiles-setup.service @1.380s +37ms
└─systemd-journal-flush.service @866ms +492ms
└─systemd-journald.service @656ms +204ms
└─systemd-journald.socket @609ms
└─system.slice @332ms
└─-.slice @332ms
Now the most of the time is spent in U-Boot. See my other thread how to reduce the time spent in U-Boot: Long time before ROCK 4 boots
Now only kernel image reading in U-Boot is slower.