由于恢复设备错误,启动缓慢,内核加载时间长


43

一段时间以来,我的启动过程花费了太长时间(将近1分钟)。

systemd-analyse time 

表明内核耗时35.765s

看一下dmesg,问题似乎出在挂载文件系统上:

...
[    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)
...

我的/etc/fstab样子是这样的:

# <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

我该如何解决?

编辑:仔细查看启动消息(删除grub中的quiet选项后),我发现了一条可疑行:

gave up waiting for suspend/resume device

我认为我的交换已加密,并且我也认为UUID /etc/initramfs/conf.d/resume与任何设备都不对应。

我应该禁用简历/暂停吗?以及如何做到这一点?


6
问题实际上出在```开始:运行/ scripts / local-premount```它在引导过程中显示(如果您禁用了quiet)。由于某种原因,此预安装脚本需要30秒钟左右的时间。
Sudhanshu

1
这个问题/答案很有价值,因为它有助于解决Lubuntu Bionic中的错误,因此请帮助重新打开它:-)
sudodus 18-4-20

Answers:


58

好的,感谢Sudhanshu的评论,我找到了解决方案。

问题出在我的交换被加密了。因此local-premount,initramfs中的脚本正在等待不可用的交换设备,直到超时。相关消息是gave up waiting for suspend/resume device

要禁用此功能(因为加密的交换不可能从交换中恢复,并且无论如何我都不使用休眠),我修改了以下文件:/etc/initramfs-tools/conf.d/resume

在此文件中,

RESUME=none

(而不是此处的UUID)将禁止等待恢复设备。

sudo update-initramfs -u

应用更改。

系统现在可以正常启动。


1
我认为您会受到Bug#1763611的影响,Lubuntu仿生靴的启动速度要慢于其他带有某些SSD的Ubuntu版本。您已经展示了如何解决该错误:-)
sudodus

3
辉煌!感谢您的修复。它让我把头发拔了!
默里

感谢您的修复
阿迪卡里Bishwash

由于zram长时间(没有交换分区)引起了问题。我刚刚修好了,谢谢!
Pierre-Damien

3

我也在Linux Mint(基于Ubuntu)中看到了这一点,并花了一些时间弄清楚出了什么问题。

如果您的系统安装在LVM上并且使用LVM卷作为交换磁盘,则会发生这种情况。

有一个长期存在的反复出现的错误,即恢复文件错误地具有UUID(对于LVM无效)而不是应具有的设备路径。参见https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1768230

您可以通过编辑/etc/initramfs-tools/conf.d/resume文件并将UUID替换为交换驱动器的设备路径来修复它。以下命令片段将使用blkid找到并报告的第一个交换驱动器为您完成此操作:

sudo bash -c 'mv /etc/initramfs-tools/conf.d/resume /tmp/resume.bak; echo RESUME=$(blkid | \grep -I swap | head -n 1 | cut -d : -f 1) > /etc/initramfs-tools/conf.d/resume'

2

上面或其他地方的这些解决方案都没有一个适合我,但我找到了一个解决方案,可以将启动时间从2分钟10秒减少到40秒。

我曾经创建和删除交换分区,并且这些日志以某种方式保留在etc / fstab文件中。因此,我的系统正在尝试挂载那些以前创建的,不再存在的交换分区。因此,请让我一步一步解释一下。

  1. 我运行了此命令sudo blkid | grep swap以找出我的交换分区。有两个,但实际上不存在一个(它不指向我的任何分区)。

  2. 所以我通过输入来编辑/ etc / fstab文件 sudo gedit /etc/fstab

  3. 然后我意识到有这么多交换文件已删除,但是以某种方式恢复了该文件中的文件。所以我提到了步骤1,删除了不再存在的分区

请查看/ etc / fstab文件屏幕截图的前后两个。清理之后,一切正常。

这是未编辑的/ etc / fstab文件,未编辑的/ etc / fstab

并在清除掉不存在的交换分区后,清理/ etc / fstab


这对我有用。谢谢。
Abanoub Hanna

2

安装2个不同的Linux发行版后出现此问题。不知何故,在一个发行版上,交换分区被分配了另一个UUID,然后可以预期。我的解决方案是:首先,运行sudo blkid以获取交换分区的正确UUID。复制交换的UUID。粘贴进去/etc/initramfs-tools/conf.d/resume就可以了RESUME=_the_correct_UUID_。现在运行sudo update-initramfs -u以应用此更改。

接下来,检查/ etc / fstab,并在必要时也更改交换分区的UUID。(我不得不)


这对我有帮助。谢谢。
Abanoub Hanna
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.