我最近安装了多个操作系统后遇到了启动错误。我注意到启动时间很长,看着启动加载代码过去,显然卡在启动作业上,需要 90 秒,最后才出现失败,显示 [Timed] 和 [delay],很难读完整行,因为它在屏幕上运行并继续启动。在启动过程中,几乎所有操作系统都会出现延迟。
我运行journalctl -p err
后发现如下情况:
Jan 03 12:37:48 z-Inspiron-N5010 systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-d85dac55\x2d2393\x2d412a\x2d8080\x2d8cb24061f7b0.device.
Jan 03 12:42:51 z-Inspiron-N5010 systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-d85dac55\x2d2393\x2d412a\x2d8080\x2d8cb24061f7b0.device.
Jan 03 12:48:34 z-Inspiron-N5010 systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-d85dac55\x2d2393\x2d412a\x2d8080\x2d8cb24061f7b0.device.
Jan 03 13:06:28 z-Inspiron-N5010 systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-d85dac55\x2d2393\x2d412a\x2d8080\x2d8cb24061f7b0.device.
z@z-Inspiron-N5010:~$ cat /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/sda14 during installation
UUID=a78d855d-8b99-4920-8cf6-16dea3ff5d56 / ext4 errors=remount-ro 0 1
# /home was on /dev/sda15 during installation
UUID=9c7b545a-642c-44ee-b9e6-f440b5aec755 /home ext4 defaults 0 2
# swap was on /dev/sda5 during installation
UUID=d85dac55-2393-412a-8080-8cb24061f7b0 none swap sw 0 0
z@z-Inspiron-N5010:~$
解析超时设备后,dev-disk-by\x2duuid-d85dac55\x2d2393\x2d412a\x2d8080\x2d8cb24061f7b0.device.
从每个以“\”分隔的 x2d 中提取,我得出:
UUID=d85dac55-2393-412a-8080-8cb24061f7b0
将其与 fstab 文件进行比较,很容易看出与错误相关的设备是/dev/sda5
。然后我运行sudo blkid /dev/sda5
并确定分区实际上已分配UUID=bb3c892f-7584-42a3-a35a-0f0dfd517222
我意识到最后安装的操作系统是 2020 年 1 月 3 日的 Debian 10。我还记得安装程序要求我确认我定义的分区/
并将/home
被格式化,但它swap
也添加到列表中。
我启动了 Debian 操作系统并运行了 blkid,同时查看了 Debian fstab 文件,如下所示,定义了两个交换 - 不是手动的,安装程序出现了一些错误。
root@debian:/home/x# cat /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/sda14 during installation
UUID=199f052c-ccf7-4b75-874c-de83d1c37300 / ext4 errors=remount-ro 0 1
# /home was on /dev/sda15 during installation
UUID=ab46faec-c492-403d-8452-c6cd79af1ca1 /home ext4 defaults 0 2
/dev/mapper/fedora_localhost--live-swap none swap sw 0 0
# swap was on /dev/sda5 during installation
UUID=bb3c892f-7584-42a3-a35a-0f0dfd517222 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
root@debian:/home/x#
不知何故,Fedoraswap
和共享/dev/sda5 swap
都在 Debian 的 fstab 中?所有系统都启动了,但由于交换超时,所有系统都延迟了 90 秒。由于 Ubuntu 16.04.6 即将推出 ESM,因此我正在尝试几个发行版。一旦我决定保留和删除哪些操作系统,我可能仍然会遇到问题。任何技术帮助都将不胜感激。谢谢。
答案1
在研究解决问题的过程中,我遇到了这个问题回答经过吉韦尔克这让我明白了发生了什么。
这个问题是由于唯一唯一标识符分配给交换分割。具体来说,分配给交换的实际 UUID 与 中定义的 UUID 不匹配,/etc/fstab
这是由于在多个逻辑分区上的同一硬盘上安装了多个操作系统造成的。在我的计算机上,安装操作系统的目的是共享交换分区/dev/sda5
。
交换分区最初由第一个安装的操作系统 Ubuntu 16.04.6 格式化为/dev/sda5
第二个分区/dev/sda2
(扩展分区)内的逻辑驱动器上的交换分区。Ubuntu 16.04.6 当时分配的 UUID 也与 中定义为交换的 UUID 相匹配/etc/fstab
。为了完整性起见,/dev/sda6
和/devsda7
,/
和也被分配了 UUID 并在 中为 Ubuntu 16.04.6/home
定义。/etc/fstab
一旦第二个操作系统安装程序定义并格式化/
,/home
它也会重新格式化/dev/sda5
为交换...再次。这样,交换就被分配了一个新的 UUID,它与/etc/fstab
第二个操作系统中定义的交换 UUID 相匹配,但现在与第一个操作系统不匹配。再次为了完整性起见/dev/sda8
,和/devsda9
、/
和/home
也分别被分配了 UUID 并定义在/etc/fstab
此多重引导系统上安装的每个操作系统都发生了相同的操作顺序。
在每个新安装中,交换都会重新格式化,并为该特定操作系统安装分配一个新的 UUID。
答案显而易见。/etc/fstab
需要编辑每个安装的操作系统的 以定义分配给交换的当前或最后一个 UUID。换句话说,每个操作系统都需要使用相同的当前交换 UUID。
1)在每个安装的操作系统中打开一个终端并输入以下内容。
2) sudo blkid /dev/sda5
- 获取分配给 swap 的当前 UUID
3) sudo gedit /etc/fstab
- 这将使用管理员权限打开文件进行编辑
4) 在里面/etc/fstab
找到UUID=d85dac55-2393-412a-8080-8cb24061f7b0
swap 的定义,并将其替换为上面步骤 2 中找到的当前 UUID。在我的情况下,当前 UUIDUUID=bb3c892f-7584-42a3-a35a-0f0dfd517222
如上面问题中的 Debian/etc/fstab
输出所示。正如问题所述,Debian 是我机器上安装的最后一个操作系统,因此最后一次为 swap 分配了一个新的 UUID,即当前 UUID。
5)保存文件并打开下一个需要正确配置的操作系统重复步骤2-5,直到完成。
按照这些步骤操作后,我不再遇到上述问题中描述的启动期间 90 秒超时的情况。
/etc/fstab
*注意:我只需在该 fstab 中的该行前面添加#
并保存文件,即可注释掉 Debian 中定义的奇怪的 Fedora 交换。
例如# /dev/mapper/fedora_localhost--live-swap