Recipe to speed up your boot from 50s+ to ~26s | 9.4s improvement (26%)
This guide assumes:
- UEFI firmware (not legacy BIOS)
- Single NIC with direct cable (no Wi-Fi, no network mounts)
- One statically configured printer (no CUPS browsing)
- Debian 13 + KDE Plasma (X11, not Wayland)
- Desktop workstation
/boot/efi before modifying bootloaders.
sudo systemctl disable --now \
avahi-daemon.service \
avahi-daemon.socket \
cups-browsed.service \
switcheroo-control.service \
wpa_supplicant.service \
ModemManager.service \
NetworkManager-dispatcher.service \
networking.service \
wtmpdb-update-boot.service \
cups.service \
cups.path \
upower.serviceWhat each does:
- avahi-daemon β mDNS/Zeroconf discovery (unnecessary with static hosts)
- cups-browsed β automatic printer detection (you have static printer)
- wpa_supplicant β Wi-Fi authentication (no Wi-Fi on this machine)
- switcheroo-control β discrete GPU switching
- ModemManager β cellular modem support
- networking.service β legacy ifupdown (NetworkManager replaces it)
- wtmpdb-update-boot β boot history logging
- upower β battery/power profile daemon
- cups.service/cups.path β running CUPS daemon (we'll use socket activation instead)
Optionally, if you don't have Bluetooth:
sudo systemctl disable --now bluetooth.servicesudo systemctl disable --now NetworkManager-wait-online.serviceThis saves 30-90s if your network is slow. Only disable if you don't need network "online" before boot completes.
Print on-demand instead of running CUPS daemon all the time:
sudo systemctl enable cups.socketsystemd-boot is a lightweight UEFI bootloader that boots faster than GRUB.
sudo apt install systemd-boot systemd-boot-toolssudo bootctl installThis installs systemd-boot to /boot/efi/EFI/systemd/ and creates a new UEFI boot entry. GRUB remains as fallback.
sudo efibootmgrsudo efibootmgr -t 0sudo efibootmgr -o 0001,0000Replace with your actual boot entry numbers from efibootmgr output.
Before & After:
Before: Startup finished in 16.849s (firmware) + 2.267s (loader) + 13.102s (kernel) + 3.012s (userspace) = 35.231s
After: Startup finished in 16.849s (firmware) + 1.234s (loader) + 6.543s (kernel) + 1.234s (userspace) = 25.860s
| Stage | Before | After | Saved |
|---|---|---|---|
| firmware | 16.849s | 16.849s | β |
| loader | 2.267s | 1.234s | -1.033s |
| kernel | 13.102s | 6.543s | -6.559s |
| userspace | 3.012s | 1.234s | -1.778s |
| TOTAL | 35.231s | 25.860s | -9.371s β‘ |
Measure and analyze your boot times:
# Show total boot time breakdown
systemd-analyze time
# Rank services by startup time
systemd-analyze blame | head -10
# Show dependency chain blocking boot
systemd-analyze critical-chain
# Check service status
systemctl status <service>
# List all enabled services
systemctl list-unit-files --state=enabled
# View/manage UEFI boot entries
sudo efibootmgr
# View systemd-boot status
sudo bootctlOnly if you understand what they do:
sudo systemctl disable --now \
remote-fs.target \
drkonqi-coredump-processor@.service \
systemd-pstore.service \
power-profiles-daemon.serviceWhat each does:
- remote-fs.target β waits for NFS/SMB mounts (disable only if you don't use network filesystems)
- drkonqi-coredump-processor β KDE crash dump processor (not critical for normal use)
- systemd-pstore β archives kernel panic logs (only useful if debugging crashes)
- power-profiles-daemon β hardware power profiles (desktop doesn't need this)
Use at your own risk. These changes are safe on standard desktops but involve system-level modifications. Test carefully. GRUB remains as fallback bootloader.