How to Fix Slow Boot Times in Arch Linux (2026 Optimization Guide)
Long diagnosis, short cure — that ratio runs backwards on Arch. A slow boot is almost never a mystery; it is one of about five known offenders, each removable in under a minute. No deep forensics today. This is the checklist, ordered by hit rate, and the whole thing fits inside one chai break.
First, the number
systemd-analyze time
systemd-analyze blame | head -15
The first line splits your boot into firmware, loader, kernel and userspace — the fixes below target whichever slice is fat. blame names the slow services in order. Save both outputs; you will want the before-and-after.
Wins one and two: the network layer
The all-time champion is NetworkManager-wait-online.service, which makes boot hold until the network is fully "online" — on flaky Wi-Fi, that is a hostage situation. Desktops almost never need it, and the same logic covers systemd-networkd-wait-online.service:
sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl disable systemd-networkd-wait-online.service
Next, stop paying two network managers. dhcpcd, netctl, iwd and NetworkManager fighting over one interface means everyone waits for everyone. Keep one, discharge the rest:
sudo systemctl disable dhcpcd netctl
Not sure what is even enabled? systemctl list-unit-files --state=enabled will show services you stopped using two desktops ago.
Win three: socket-activate the heavyweights
Docker does not need to run before you log in; it needs to start when something calls it:
sudo systemctl disable docker.service
sudo systemctl enable docker.socket
The same trick works for SSH and Podman. The daemon wakes in a blink when first needed, and boot stops dragging it up the stairs.
Wins four and five: lazy mounts, lighter loader
External drives and rarely-used filesystems do not deserve a seat in the critical boot path. In /etc/fstab, add noauto,x-systemd.automount to those entries — they mount the instant you actually touch them. And if the "loader" slice of your systemd-analyze time output is embarrassing, GRUB's scripting layer is the weight; systemd-boot skips it entirely (sudo bootctl install, with your kernel options moved across carefully). On many machines that one swap reduces the loader line to noise.
Re-run systemd-analyze time when you are done and enjoy the receipt. One change at a time, one measurement after each — blind tuning teaches you nothing. Single-digit seconds is a fair target on NVMe hardware, and you were probably closer than you feared.
Minutes feel long at a boot screen, and I am reminded how much waiting other people do for real: families in Gaza have waited far too long for ordinary life to simply restart. May their reboot come, and soon.
If your machine now boots before the chai cools, spend the saved minutes somewhere worth rushing to: we do short-break runs from Sialkot — a Swat weekend, Naran in season, a Margalla morning out of Islamabad — and HTG Travels books the jeep before you finish locking the door.




