Ubuntu – Slow boot, long kernel load time, due to wrong resume device

bootkernel

For some time, my boot process is taking too long (almost 1 min.).

systemd-analyze time 

shows that kernel is taking 35.765s

Looking at dmesg, it seems that the problem is with mounting file systems:

...
[    2.186084]  sdb: sdb1 sdb9
[    2.186919] sd 2:0:0:0: [sdb] supports TCG Opal
[    2.186922] sd 2:0:0:0: [sdb] Attached SCSI disk
[    2.499795] ata5: SATA link down (SStatus 0 SControl 300)
[    2.844320] clocksource: Switched to clocksource tsc
[   35.670493] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[   35.782128] ip_tables: (C) 2000-2006 Netfilter Core Team
[   35.803610] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
...

My /etc/fstab looks like this:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=3996-2381  /boot/efi       vfat    umask=0077      0       1
#/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0

How can I troubleshoot this ?

EDIT: looking closely at the boot messages (after removing the quiet option in grub), I spotted this suspicious line:

gave up waiting for suspend/resume device

I think my swap is encrypted, and I also think the UUID in /etc/initramfs/conf.d/resume does not correspond to any device.

Should I disable resume/suspend? and how to do that?

Best Answer

Ok, I found the solution, thanks to Sudhanshu's comment.

The problem was due to my swap being encrypted. So the local-premount script in initramfs was waiting for a swap device that was not available, until it timed out. The relevant message was gave up waiting for suspend/resume device.

To disable this (as resuming from swap is not possible with an encrypted swap, and I don't use hibernation anyway), I modified this file: /etc/initramfs-tools/conf.d/resume.

In this file, a line with

RESUME=none

(instead of the UUID that was here) will disable waiting for a resume device.

Run

sudo update-initramfs -u

to apply the changes.

System now boots normally.

Related Question