graphical.target was gated on network-online.target: cups-browsed orders itself After=network-online.target and sits in multi-user.target, so the session waited for NetworkManager-wait-online (DHCP/Wi-Fi association) before coming up. On the bench VM that was ~140ms, but it's the classic multi-second boot stall on real Wi-Fi. Mask NetworkManager-wait-online.service so network-online.target is reached immediately and nothing in the boot waits for connectivity; NetworkManager still comes up and cups-browsed browses once the link is live. Mirrors the existing systemd-networkd-wait-online mask. Enabled at install (enable-services.sh) and masked on existing installs via migration. Verified on a fresh boot: the graphical.target critical chain no longer passes through network-online.target / NetworkManager-wait-online. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
17 lines
815 B
Bash
17 lines
815 B
Bash
# Enable services only. Installs are followed by reboot, so don't start/reload
|
|
# daemons mid-install. UFW and hardware-gated services stay in their own scripts.
|
|
systemctl enable cups.service
|
|
systemctl enable cups-browsed.service
|
|
systemctl enable avahi-daemon.service
|
|
systemctl enable linux-modules-cleanup.service
|
|
systemctl enable docker.socket
|
|
systemctl enable systemd-resolved.service
|
|
systemctl enable NetworkManager.service
|
|
# Don't let network-online.target (pulled in by cups-browsed) hold up
|
|
# graphical.target waiting for DHCP/Wi-Fi association. Nothing in the session
|
|
# needs to block on the network. Mirrors the systemd-networkd-wait-online mask
|
|
# in install/hardware/network.sh.
|
|
systemctl mask NetworkManager-wait-online.service
|
|
systemctl enable power-profiles-daemon.service
|
|
systemctl enable sddm.service
|