Skip to content

Boot and startup

Boot and login optimization log for pyrite.

Outcome: - Baseline boot time improved from about 2m28s to about 40s to graphical target.

Startup strategy

  1. Use socket activation for Docker:
  2. Disable eager daemon start:
  3. sudo systemctl disable docker containerd
  4. Enable docker socket:
  5. sudo systemctl enable docker.socket

  6. Disable non-essential boot services:

  7. containerd
  8. lvm2-monitor
  9. gnome-remote-desktop
  10. apport

Command: - sudo systemctl disable containerd lvm2-monitor gnome-remote-desktop apport

  1. Reduce snap loop mounts:
  2. Migrated Firefox, Thunderbird, and Steam from snap to apt.
  3. Kept only required snaps for livepatch.

  4. Fix NFS boot blocking:

  5. Updated ark.service and big_itch.service to use network-online.target.
  6. Added TimeoutStartSec to avoid long hangs when NAS is unavailable.

  7. Remove legacy tunnel services from boot path:

  8. wg-quick@wg0 disabled and archived.
  9. dev-tunnel.service disabled.
  10. logkeep-tunnel.service disabled.

  11. Warm reboot reliability:

  12. Kernel params in /etc/default/grub:
  13. reboot=efi nvidia.NVreg_PreserveVideoMemoryAllocations=0

Remaining optional optimization

  • nvidia-cdi-refresh.service can be disabled if GPU passthrough in containers is not needed.
  • sudo systemctl disable nvidia-cdi-refresh.service

Verification checklist

Boot critical chain: - systemd-analyze critical-chain

Boot blame: - systemd-analyze blame

Service status checks: - systemctl status docker.socket - systemctl status ark.service big_itch.service - systemctl status tailscaled

Revert references

  • Re-enable docker and containerd eager startup:
  • sudo systemctl enable docker containerd
  • sudo systemctl disable docker.socket