dependency failed for /dev/disk/by-uuid

之前虚拟机的硬盘不够用了,又给它加了200G,然后用gparted删掉了swap分区,调整了主分区大小,又在硬盘最后面重建了swap分区。结果导致每次开机关机都特别慢,提示错误dependency failed for /dev/disk/by-uuid。原因是重建的swap分区的uuid和之前的不一样了,而系统还去找之前的uuid,一直找不到所以开机关机时间都比较长。

解决方法:
首先看一下当前的硬盘uuid,其中sda1是/boot/efi,sda3是/,sda2打算用做swap。

  1. ls -l /dev/disk/by-uuid/
  2. total 0
  3. lrwxrwxrwx 1 root root 10 4 2 2019 1edcfe8d-8a73-4095-92d3-c5e10d4c3227 -> ../../sda2
  4. lrwxrwxrwx 1 root root 10 4 2 2019 C2EE-8E7B -> ../../sda1
  5. lrwxrwxrwx 1 root root 10 4 2 2019 cc8738be-22b6-4114-8186-245844467f53 -> ../../sda3

再看一下/etc/fstab,可以看到swap的uuid和实际的不一样。fastab里面保存的是每次开机时系统会自动挂载的分区和挂载点的映射关系。如果要挂载的分区不存在就要等timeout后才能继续往下执行,这就是开关机变慢的原因。将fastab里swap对应的uuid改成实际sda2对应的uuid即可。

  1. # <file system> <mount point> <type> <options> <dump> <pass>
  2. UUID=C2EE-8E7B /boot/efi vfat defaults,noatime 0 2
  3. UUID=cc8738be-22b6-4114-8186-245844467f53 / ext4 defaults,noatime 0 1
  4. UUID=0c09ccf1-38c5-416e-83c8-2a28c4c47f1f swap swap defaults,noatime 0 2

我在调整硬盘大小时就已经用gparted激活了sda2的swap,如果没做过这个操作,那可以在命令行中实现。

  1. $ sudo mkswap -U 1edcfe8d-8a73-4095-92d3-c5e10d4c3227 /dev/sda2
  2. mkswap: /dev/sda2: warning: wiping old swap signature.
  3. Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
  4. no label, UUID=1edcfe8d-8a73-4095-92d3-c5e10d4c3227
  5. $ sudo swapon -a

error: resume: hibernation device not found

调整完硬盘大小后还有个问题,就是每次开机时都报错error: resume: hibernation device not found,这个原因和上面的差不多,也是系统想找之前的swap分区的uuid结果找不到。
解决方法:
打开/etc/default/grub,可以看到GRUB_CMDLINE_LINUX_DEFAULT那一行resume=UUID=后面还是旧的uuid,把它改成新的uuid。

  1. GRUB_DEFAULT=saved
  2. GRUB_TIMEOUT=5
  3. GRUB_TIMEOUT_STYLE=menu
  4. GRUB_DISTRIBUTOR='Manjaro'
  5. GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=0c09ccf1-38c5-416e-83c8-2a28c4c47f1f"
  6. GRUB_CMDLINE_LINUX=""

然后再执行下面两条命令:

  1. $ sudo mkinitcpio -P
  2. $ sudo update-grub