启动缓慢 — “正在为 dev-disk-by 运行启动作业...”

启动缓慢 — “正在为 dev-disk-by 运行启动作业...”

我不记得这个问题是什么时候开始出现的,但很可能是在我将 VMWare Ubuntu 映像移动到外部 SSD 时发生的,这样我就可以在任何一台电脑上使用该操作系统。谷歌上没有太多关于这个问题的链接,但出现的链接谈到了fstab。例如,启动缓慢 - “正在为 dev-disk-by 运行启动作业...”是什么意思? - OpenSUSE 论坛

截屏

提到必须删除交换分区并重新创建它。

我可以尝试使用 Gparted 来做到这一点,但我主要担心的是会丢失我在 Ubuntu 中的当前设置,因为我不完全确定如果我按照帖子中的建议弄乱交换会发生什么。有人能帮忙吗?

答案1

如果你得到

正在为 dev-disk-by 运行启动作业...

每次启动时均有 90 秒延迟,然后完成以下步骤:

  1. 使用软件中心安装 GParted

  2. 打开 GParted 并查看 Ubuntu 当前正在使用的分区

  3. 使用以下行编辑 fstab 文件。

    sudo -H gedit /etc/fstab

  4. 如果您有一个当前未使用的设备,请#在该行开头插入一个空格并将其注释掉。

  5. 如果您将外部设备配置为自动挂载(通常带有nofail选项),请将其添加到设备的选项中:x-systemd.device-timeout=1ms。这会将设备在启动时挂载的等待时间设置为默认 90 秒中的 1 毫秒。示例:

/dev/sdg1        /media/backup    jfs    nofail,x-systemd.device-timeout=1ms    0 0
  1. 保存 fstab 文件(最好事先保存备份)。运行 测试您的 fstab 文件mount -a。如果出现任何语法错误,此命令会显示出来。

  2. 重新启动后启动作业应该不会再出现。

答案2

我在调整虚拟机上的主分区大小后遇到了同样的问题gparted 直播迫使我删除并重新初始化交换。这导致设置的新 UUID 与 fstab 文件不匹配。

为了避免此问题,/etc/fstab您可以

  • sudo blkid主分区调整大小后,将交换 UUID 替换为新的 UUID(运行以找到它)。

  • 或者,在主分区调整大小之前(或之后)注释掉交换分区。

我推荐前者,因为这是操作系统的设置方式。

答案3

问题似乎是由于尽管 fstab 中有交换条目,但实际上却没有。我使用 GParted 调整分区大小并创建了新的交换。然后我将 UUID 复制到 fstab 文件中...

  1. 我现在有交换
  2. 启动时间从 90 多秒缩短至数秒

答案4

主要情況:

您需要检查这些文件下的 UUID(其他答案中详细回答了......)

/etc/crypttab 
/etc/fstab
/etc/grub.d/40_custom 
/boot/grub2/grub.cfg

替代方案一——Udev:

这可能是由于udev如果你有规则该脚本/etc/udev/rules.d/并非在启动时运行,如果脚本失败,它将使该 fstab 步骤永远继续下去,只需编辑脚本以满足您的需要或将其删除。

替代方案 II - Crypted Dev:

加密分区可能会造成混淆,因为主分区有一个 UUID,而映射的解密分区有一个与主分区不同的 UUID,对于单个分区,它们必须在不同的地方定义,etc/crypttab并且/etc/fstab

# lsblk -o name,uuid,mountpoint
├─sda2                         727fa348-8804-4773-ae3d-f3e176d12dac
│ └─sda2_crypt (dm-0)          P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi

需要指定真实 UUIDetc/crypttab

# cat /etc/crypttab
sda2_crypt  UUID=727fa348-8804-4773-ae3d-f3e176d12dac  none  luks

虚拟 UUID 需要位于/etc/fstab

# cat /etc/fstab
UUID=P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi / ext4 defaults,errors=remount-ro 0 1

替代方案三-Ghost Dev:

设置为在启动时安装但并不存在于系统中或像 USB 驱动器那样分离的设备。

检查实际连接的设备lsblk -o name,uuid,mountpoint并编辑/etc/fstab以仅保留连接的设备 或者将未连接的设备留在那里,但使用选项将它们设置为在启动时被忽略,noauto并像这样设置行

UUID=BLA-BLA-BLA /mount ext4 option,noauto,option 0 0

检查系统日志

journalctl -ab 

systemd-analyze blame

systemd-analyze critical-chain

systemctl status dev-mapper-crypt_sda2.device

systemctl status systemd-udev-settle.service

资料来源:Linuxhacks.org
披露:我是 Linuxhacks.org 的所有者

相关内容