我不记得这个问题是什么时候开始出现的,但很可能是在我将 VMWare Ubuntu 映像移动到外部 SSD 时发生的,这样我就可以在任何一台电脑上使用该操作系统。谷歌上没有太多关于这个问题的链接,但出现的链接谈到了fstab
。例如,启动缓慢 - “正在为 dev-disk-by 运行启动作业...”是什么意思? - OpenSUSE 论坛。
提到必须删除交换分区并重新创建它。
我可以尝试使用 Gparted 来做到这一点,但我主要担心的是会丢失我在 Ubuntu 中的当前设置,因为我不完全确定如果我按照帖子中的建议弄乱交换会发生什么。有人能帮忙吗?
答案1
如果你得到
正在为 dev-disk-by 运行启动作业...
每次启动时均有 90 秒延迟,然后完成以下步骤:
使用软件中心安装 GParted
打开 GParted 并查看 Ubuntu 当前正在使用的分区
使用以下行编辑 fstab 文件。
sudo -H gedit /etc/fstab
如果您有一个当前未使用的设备,请
#
在该行开头插入一个空格并将其注释掉。如果您将外部设备配置为自动挂载(通常带有
nofail
选项),请将其添加到设备的选项中:x-systemd.device-timeout=1ms
。这会将设备在启动时挂载的等待时间设置为默认 90 秒中的 1 毫秒。示例:
/dev/sdg1 /media/backup jfs nofail,x-systemd.device-timeout=1ms 0 0
保存 fstab 文件(最好事先保存备份)。运行 测试您的 fstab 文件
mount -a
。如果出现任何语法错误,此命令会显示出来。重新启动后启动作业应该不会再出现。
答案2
我在调整虚拟机上的主分区大小后遇到了同样的问题gparted 直播迫使我删除并重新初始化交换。这导致设置的新 UUID 与 fstab 文件不匹配。
为了避免此问题,/etc/fstab
您可以
sudo blkid
主分区调整大小后,将交换 UUID 替换为新的 UUID(运行以找到它)。或者,在主分区调整大小之前(或之后)注释掉交换分区。
我推荐前者,因为这是操作系统的设置方式。
答案3
问题似乎是由于尽管 fstab 中有交换条目,但实际上却没有。我使用 GParted 调整分区大小并创建了新的交换。然后我将 UUID 复制到 fstab 文件中...
- 我现在有交换
- 启动时间从 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 的所有者