此问题通常是由于硬盘UUID变更,系统一直尝试挂载已不存在的分区导致的。

尤其是当从大硬盘克隆到小硬盘,由于无法通过Clonezilla全盘克隆,只能手动新建分区再克隆分区,UUID必然会发生变化。

核心解决思路为:修改/etc/fstab中硬盘UUID为当前UUID。

检查当前UUID

sudo blkid

你会看到类似这样的输出:

~$ sudo blkid
/dev/nvme0n1p2: UUID="080bb571-86dc-4bc0-b6e5-d69455eaff0e" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="fafa5e3a-90c5-                                                    4d8f-b798-7765e9a6fa0d"
/dev/loop1: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/nvme0n1p1: UUID="1144-CBFB" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="Basic data partition" PARTUUID="ab880d1a-                                                    6819-4dee-974a-57083e714b24"
/dev/loop8: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop6: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop13: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop4: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop11: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop2: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop9: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop7: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop14: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop5: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop12: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop3: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop10: BLOCK_SIZE="131072" TYPE="squashfs"

检查/etc/fstab

sudo nano /etc/fstab

例如我这里看到的内容是这样:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p2 during curtin installation
/dev/disk/by-uuid/080bb571-86dc-4bc0-b6e5-d69455eaff0e / ext4 defaults 0 1
# /boot/efi was on /dev/nvme0n1p1 during curtin installation
/dev/disk/by-uuid/C409-FABF /boot/efi vfat defaults 0 1
/swap.img       none    swap    sw      0       0

修改/etc/fstab

根据当前的UUID,修改fstab文件即可(注意替换成你自己的UUID)

# <file system>                        <mount point>  <type>  <options>                                      <dump>  <pass>
# 根分区
UUID=080bb571-86dc-4bc0-b6e5-d69455eaff0e  /            ext4    defaults                                       0       1

# EFI 分区 —— 改成 blkid 里真实的 UUID
UUID=1144-CBFB                            /boot/efi     vfat    defaults                                       0       1

# 如果你不需要 swap 文件,直接注释掉;或者加上 nofail
# /swap.img                              none          swap    sw,nofail,x-systemd.device-timeout=5s           0       0

使配置文件生效

sudo systemctl daemon-reload
sudo mount -a

如果执行完之后,没有出现任何报错,就说明修改成功,可以重启看看开机速度是否恢复正常:

sudo reboot