Skip to content

Ubuntu 18.04 Boot Speedups

Checking startup speed and delays

> systemd-analyze 
Startup finished in 16.116s (firmware) + 22.465s (loader) + 4.241s (kernel) + 7.064s (userspace) = 39.888s
graphical.target reached after 7.056s in userspace
> systemd-analyze blame | head -10
         10.869s apt-daily.service
          4.166s NetworkManager-wait-online.service
          2.614s apt-daily-upgrade.service
          1.366s jenkins.service
          1.310s motd-news.service
          1.013s snap-pycharm_community-85.mount
           993ms snap-gtk_common_dthemes-701.mount
           982ms snap-polarr-8.mount
           954ms snap-core-5548.mount
           933ms snap-gimp-40.mount

Changing apt-daily.service to start later

Using information from this thread, apt-daily.service should not start in the boot sequence. These are the instructions.

# edit apt-daily timer
> sudo systemctl edit apt-daily.timer

Then paste the following into the editor and save.

# apt-daily timer configuration override
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
AccuracySec=1h
RandomizedDelaySec=30min

This changes the "timer" that triggers apt-daily.service to run at a random time between 15 min and 45 min after boot, and once a day thereafter

LLVM 30 Second delay at boot

When using LLVM, there is a error in a configuration file which points to the swap device, a script will fail and wait 30 seconds holding up boot. This information comes from this post.

The wait-for-root in /usr/share/initramfs-tools/scripts/local times out after expiring 30 seconds (slumber value).

# Timeout is max(30, rootdelay) seconds (approximately)
local slumber=30
case $DPKG_ARCH in
  powerpc|ppc64|ppc64el)
    slumber=180
    ;;
  *)
    slumber=30
    ;;
esac
if [ ${ROOTDELAY:-0} -gt $slumber ]; then
  slumber=$ROOTDELAY
fi

case "$dev_id" in
UUID=*|LABEL=*|/dev/*)
  FSTYPE=$( wait-for-root "$dev_id" $slumber )
  ;;
*)
  wait_for_udev 10
  ;;
esac

The dev_id variable is assigned the value of RESUME which is defined at /etc/initramfs-tools/conf.d/resume. This UUID which is assigned to RESUME

> cat /etc/initramfs-tools/conf.d/resume
RESUME=UUID=67b3fe6f-1ec4-413f-8c5a-1136bc7f3270

Fix LLVM

> sudo sed -e 's/^RESUME=/#RESUME=/g' -i /etc/initramfs-tools/conf.d/resume
> echo "RESUME=/dev/mapper/ubuntu--vg-swap_1" | sudo tee -a /etc/initramfs-tools/conf.d/resume

Recreate initrd and reboot system.

> sudo update-initramfs -u
> sudo reboot