最近安装多个操作系统后,我遇到了启动错误。我注意到很长的启动时间,看着启动加载代码过去了,显然卡在了一个需要 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:~$
在解析 Timed Out Devicedev-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 以来,我正在玩一些发行版。一旦我决定保留和删除哪些操作系统,我可能仍然会遇到问题。任何技术帮助将不胜感激和感谢。
在我研究解决我的问题的过程中,我遇到了guiverc的这个答案,它帮助我理解了发生了什么。
此问题是由分配给交换分区的UUID不匹配引起的。具体来说,分配给交换的实际 UUID 与定义的 UUID 之间发生不匹配 这是由多个操作系统安装在多个逻辑分区的同一 HDD 上引起的。安装操作系统的目的是在我的机器上 共享一个交换分区。
/etc/fstab
/dev/sda5
交换分区最初由安装的第一个操作系统 Ubuntu 16.04.6
/dev/sda5
在第二个分区(扩展分区)内的逻辑驱动器上格式化为交换。/dev/sda2
Ubuntu 16.04.6 当时分配的 UUID 也与定义为 swap in 的 UUID 匹配/etc/fstab
。为了完整起见/dev/sda6
,/devsda7
和/
也/home
被分配了 UUID 并在/etc/fstab
Ubuntu 16.04.6 中定义。一旦第二个操作系统安装程序定义并格式化
/
,/home
它也重新格式化/dev/sda5
为交换...再次。这样做时,交换被分配了一个新的 UUID,它与第二个操作系统中定义的交换 UUID 匹配/etc/fstab
,但现在与第一个操作系统不匹配。同样,为了完整起见/dev/sda8
, 和/devsda9
,/
和/home
也分别分配了 UUID 并在/etc/fstab
此多引导系统上安装的每个操作系统都发生了相同的操作顺序。在每次新安装中,swap 都会重新格式化并为该特定操作系统安装分配一个新的 UUID。
答案不言而喻。
/etc/fstab
需要编辑安装的每个操作系统的 ,以定义分配给交换的当前或最后一个 UUID 。换句话说,每个操作系统都需要使用相同的当前交换 UUID。1)从安装的每个操作系统中打开一个终端并键入以下内容。
2)
sudo blkid /dev/sda5
- 获取分配给swap的当前UUID3)
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 是我机器上安装的最后一个操作系统,因此最后一次为交换分配了一个新的 UUID,也就是当前的 UUID。5) 保存文件并打开下一个需要正确配置的操作系统,重复步骤 2-5 直到完成。
执行这些步骤后,我不再在启动过程中发生 90 秒超时,如上述问题中所述。
/etc/fstab
*注意:我只是通过#
在该 fstab 中的该行前面添加并保存文件来注释掉在 Debian 中定义的奇怪的 Fedora 交换。例如
# /dev/mapper/fedora_localhost--live-swap