慢速启动-“正在为开发磁盘运行启动作业……”


108

我不记得问题何时开始发生,但可能是当我将VMWare Ubuntu映像移至外部SSD以便我可以在任何PC上使用OS的时候。Google上没有很多有关此问题的链接,但出现的链接却在谈论fstab。例如,慢速启动-什么是“正在为dev-disk-by正在运行启动作业...”?-OpenSUSE论坛

屏幕截图

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

我可以尝试使用Gparted进行此操作,但是我主要担心的是丢失当前在Ubuntu中的设置,因为我不完全确定如果我按照线程中的建议操作swap会发生什么情况。有人能帮忙吗?


您可能想克隆您的SSD,然后就可以淘汰了:)(为此尝试CloneZilla
Grammargeek 2015年

嗯,我想我可以做到。我要等到放假回家之后,才能将其移到我有更多空间的地方
cpd1 2015年

1
我最终解决了这个问题。我认为如果我选择Gparted,就不会有交换。我最终创建了一个,并更改了fstab中的条目。那
行得通

1
如果您解决了自己的问题,请做出自己的回答,然后单击检查以将其标记为已解决:)
Grammargeek 2015年

1
有道理...我已经添加了它
cpd1

Answers:


115

如果您得到“由dev-disk-by启动的启动作业..”,然后在每次引导期间延迟90秒,请完成以下步骤:

  1. 使用软件中心安装gparted
  2. 打开gparted,查看Ubuntu当前正在使用的分区
  3. 使用下面的行编辑fstab文件。

    sudo -H gedit /etc/fstab
    
  4. 查找您当前未使用的设备

  5. #在该行的开头插入a 和一个空格,将其注释掉。

  6. 重设,希望它对您有用!


3
逐步说明可帮助所有人!谢谢!
约翰·霍尔

自您提供了步骤以来,我就将您的答案标记为答案
cpd1 '16

9
+1 ...对于无法在其中找到的用户/etc/fstab,您也可以在中将其检出/etc/crypttab-这就是我的情况。
Grzegorz

7
如果它是一个已更改的块ID,那么我不希望将其注释掉,而是更正设备ID。请使用lsblk -f来查看将哪个设备与哪个ID相关联并替换ID。
user1708042

3
对我有用的是将步骤4更改为:“将gparted中找到的UUID复制到导致启动延迟的设备上”,并将步骤5更改为:“将其替换为在fstab文件中找到设备的位置”。有时,当您更改移动分区时,UUID也会更改,这就是导致问题的原因。您只需要为修改后的分区修复新的UUID。
m4l490n

35

看起来该问题是由于以下事实造成的:即使fstab包含一个交换条目,实际上却没有。我使用GParted调整分区大小并创建了一个新的Swap。然后,我将UUID复制到fstab文件中。

  1. 我现在有交换
  2. 开机时间从90秒减少到几秒钟

5
我调整了主分区的大小(删除/重新创建交换),然后遇到了这个问题。我使用'sudo blkid'通过UUID列出设备,然后在/ etc / fstab中使用新的UUID。
布莱德·戈斯

32

在调整VM上的主分区大小后,我遇到了同样的问题,因为gparted live迫使我删除并重新初始化交换来这样做。这导致设置了与fstab文件不匹配的新UUID。

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

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

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

我建议使用前者,因为这是设置操作系统的方式。


移动交换分区后对我也有帮助
po.pe

17

就我而言,我以前一直在使用加密交换,并提到了启动作业/dev/mapper/cryptswap1。为了解决该问题/etc/crypttab,除了William MacDonald回答中描述的步骤外,我还必须删除该文件。


6

使用gparted调整分区大小或删除分区时,通常必须创建一个新的交换分区。

然后有必要在创建交换后通过gparted激活交换(存在命令“激活交换”)。

此外,您必须将新的UUID复制到/ etc / fstab中以进行安装,否则在引导时操作系统将尝试找到它,但徒劳无功,因为fstab文件包含引用旧交换的UUID。Gparted提供了有关UUID的信息,但您可以在终端中轻松运行:

sudo blkid

找到它。


4

开机时我遇到了同样的问题。

在我的/etc/fstab文件中,我的分区定义为/dev/sda1/dev/sda2等等,但是在引导时,几次出现了消息“ 正在为dev-sdx运行启动作业 ”(“ x”定义受影响的单元或分区)。

为了解决它,我/dev/sdx通过分区的UUID 更改了值。要查看UUID,请从终端运行lsblk -f。然后,复制受影响分区的UUID并将其写入/etc/fstab文件,替换/dev/sdax如下:/dev/sda1更改为UUID=xxxxxxxxxxxxxxxxxx

它对我有用,我希望此信息有用。


是。这正是UUID解决的问题。系统将安装具有该ID的任何分区,而不管其位于哪个设备上或该分区位于何处。不利的一面是,每当破坏/创建分区或安装新驱动器时,都需要更改UUID。复制分区(分段复制/粘贴)将创建具有相同UUID的副本,如果原始副本和副本同时在线都可能导致问题。对于大多数人来说,这是可以的,但是在克隆/更换驱动器时,请记住这一点。
David C.

3

由于交换了驱动器并且UUID不匹配,因此启动速度变慢。这导致Ubuntu在启动期间进行扫描。

我经常交换驱动器。如果您的支架始终位于同一位置(例如我的支架),则只需删除UUID并放置直接路径即可防止发生扫描错误...

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/sda1 /               ext4    errors=remount-ro 0       1
/dev/sda2 none            swap    sw              0       0

这个建议将如何加快启动速度?有参考吗?
Mostafa Ahangarha

我正在回答他的错误问题,导致启动缓慢。我让我的答案更清楚了。

1
是的,按设备名称进行安装可以避免该问题,但同时也会引起UUID(和卷标)需要解决的问题-将驱动器连接到其他位置(例如,从一个SATA接口到另一个)会更改设备名称,打破坐骑。您需要决定哪个问题更容易解决,但是请确保记住您的决定,因为当您忘记了问题而发生问题时,这可能会非常令人沮丧。
David C.

3

主要情况:

已详细回答...(您需要检查这些文件下的UUID)

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

替代情况I-Udev:

如果您的规则脚本并不旨在在引导时运行,则可能是由于udev引起的,如果脚本失败,它将使fstab步骤永远继续下去,只需编辑脚本以匹配您的需求或删除它即可。/etc/udev/rules.d/

替代情况II-加密开发:

加密分区可能会造成混淆,因为对于一个分区,主分区具有一个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

真正的UUID需要在 etc/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

替代情况III-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

1
谢谢,这是一个很好的答案,应该接受。此处的大多数其他答案都是危险的错误,即使绕开了该问题,它们也会引入其他不太明显的问题,例如,删除交换设备的加密。
Waqar Lim

2

除了检查/etc/fstab/etc/crypttab在其他答案中提到的以外,还检查来自中的内核参数的UUID /etc/default/grub。有一阵子,我对一个系统非常困惑,因为它只有一个蠕虫/etc/fstab才能发现resume=…GRUB配置中的内核参数。


1
这帮助我解决了问题。我的/ etc / fstab很好。然后,除了,/etc/default/grub我还必须在中进行更改/boot/efi/EFI/fedora/grub.cfg。在我手动更改交换分区后,linux“ resume = UUID = ...”参数变得过时了。
斯特凡


0

我知道这很旧,但是在使用rsync克隆安装时,我偶然发现了这个问题,同样的错误消息。在fstab上没有错误,手动更新了initrdfs后解决了该问题。为了做到这一点,

  1. 将计算机引导到可以正常工作的安装中(多引导计算机,否则为livecd)

  2. 挂载有问题的系统的根分区

  3. 挂载dev,sys和proc到工作的chroot

  4. chroot到文件目录的根目录

  5. 执行mkinitrd

  6. 退出chroot并重新启动。

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.