如何诊断/修复 Ubuntu 18.04 上启动速度非常慢的问题

如何诊断/修复 Ubuntu 18.04 上启动速度非常慢的问题

SSD 很长时间没有做任何事。

  • 我怎样才能找到故障并修复它?
  • 已经检查过/etc/fstab,没有交换或任何错误(32GB RAM,没有交换)

[    2.173492] usb 2-1.6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    2.173497] usb 2-1.6: Product: DW375 Bluetooth Module
[    2.173501] usb 2-1.6: Manufacturer: Dell Computer Corp
[    2.173511] usb 2-1.6: SerialNumber: 7CE9D3C0713B
[    2.323728] ata4: SATA link down (SStatus 0 SControl 300)
[    2.441062] input: AlpsPS/2 ALPS GlidePoint as /devices/platform/i8042/serio1/input/input6
[    2.640309] ata5: SATA link down (SStatus 0 SControl 300)
[    2.954947] ata6: SATA link down (SStatus 0 SControl 300)
[    3.068090] clocksource: Switched to clocksource tsc
[   36.584826] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[   36.726117] ip_tables: (C) 2000-2006 Netfilter Core Team
[   36.732610] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +AC
L +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[   36.751996] systemd[1]: Detected architecture x86-64.
[   36.753867] systemd[1]: Set hostname to <latitude-e5520>.
[   36.868561] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[   36.868594] systemd[1]: Reached target Remote File Systems.
[   36.868751] systemd[1]: Created slice User and Session Slice.
[   36.868869] systemd[1]: Created slice System Slice.
[   36.868948] systemd[1]: Listening on udev Control Socket.
[   36.868957] systemd[1]: Reached target Slices.
[   36.868996] systemd[1]: Listening on udev Kernel Socket.
[   36.895156] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[   36.898185] lp: driver loaded but no devices found
[   36.903941] ppdev: user-space parallel port driver

答案1

我今天升级到 18.04 也遇到了同样的问题。我可以通过使用该noresume参数启动内核来修复它。

和你一样,我也没有交换空间。在升级过程中的某个时刻,initramfs 配置被修改了,添加了一行指向不存在的交换分区。启动缓慢是因为它正在寻找这个分区,然后在 30 秒后超时。

要更新 GRUB 以便它在启动时自动将此选项传递给内核:

  1. 编辑文件/etc/default/grubfile 使得字符串noresume包含在行中GRUB_CMDLINE_LINUX_DEFAULT,例如:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noresume"
    
  2. 运行此命令来更新 GRUB:

    sudo update-grub
    
  3. 重新启动计算机

答案2

$ systemd-analyze blame

查看哪些进程占用了启动过程的大部分时间。

答案3

对我来说,有效的方法是运行,sudo rm /etc/initramfs-tools/conf.d/resume然后运行sudo update-initramfs -u。这似乎是升级后的回归(请参阅https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861151)。

答案4

您可以配置开始作业和停止作业的超时。

使用提升的权限进行编辑/etc/systemd/system.conf,并更改/添加两行默认注释的行,从 90 秒更改为 5 秒(或任何你喜欢的值),然后取消注释:

从:

#DefaultTimeoutStartSec=90s
#DefaultTimeoutStopSec=90s 

到:

DefaultTimeoutStartSec=5s
DefaultTimeoutStopSec=5s

之后,使用以下命令重建 initramfs 来应用更改:

sudo update-initramfs -u

相关内容