Fedora 尝试挂载不在 fstab 或 systemd 中的已删除交换分区

Fedora 尝试挂载不在 fstab 或 systemd 中的已删除交换分区

当在 Fedora 29 中创建一个新的交换分区以扩大它时,我使用 GParted 删除了旧的交换分区,并删除了它们在/etc/fstab.我为新的交换分区创建了新条目,它们按预期工作。

然而,即使旧分区不在 /etc/fstab 中,系统仍会在启动时尝试挂载旧分区- 直到最终超时。

对于 的任何条目,该服务也不存在systemctl status 。我也尝试过跑步

systemctl reset-failed
systemctl daemon-reload

但无济于事。以下是我的fstab文件的内容:

# /etc/fstab
# Created by anaconda on Wed Nov 28 22:29:31 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=8efbb12d-bd38-420c-a33e-f02205e1a6e9 /                       ext4    defaults        1 1
UUID=ded23a91-0e22-48f4-b1ec-169f255961b6 /boot                   ext4    defaults        1 2
UUID=AEA0-2099          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
UUID=3e9f87b8-0b25-4a2f-aa21-51ea8fc58020 swap                    swap    defaults        0 0
UUID=8743c19d-5d86-4651-a8b6-cf3477da8b13 swap                    swap    defaults        0 0

以下内容来自/var/log/boot.log

[*** ] A start job is running for dev-disk-by\x2duuid-5121042f\x2de8a6\x2d41ed\x2d981e[ TIME ] Timed out waiting for device dev-disk-by\x2duuid-5121042f\x2de8a6\x2d41ed\x2d981e\x2de9d224055ea2.device.

编辑:根据 Nasir Riley 和 sourcejedi 的评论,我检查了我的 grub 文件,其中没有提及分区,并且我运行了grub2-mkconfig -o /boot/grub2/grub.cfg 它也可能与我在该系统上运行双引导窗口有关。

编辑2似乎该分区是在 /proc 中提到的,但在其他地方没有提到。我已经重新安装了系统来解决这个问题。

答案1

编辑后/etc/fstab您必须重新生成 initramfs。

dracut --regenerate-all --force

答案2

收集其他人的工作以获得完整的答案。

问题的根源

问题是当grub.cfg文件生成时它会读取该文件/etc/default/grub

如果系统安装时或上次更新 GRUB 时启用了交换分区,则它会包含在设置文件中。通常在诸如

GRUB_CMDLINE_LINUX_DEFAULT="resume=dev/disk/by-uuid/5121042f-e8a6-41ed-981e-e9d224055ea2 splash=silent mitigations=auto quiet"

该行附加到linuxorlinuxefi命令后,grub.cfg使 GRUB 尝试将指定分区加载为“恢复”设备。

删除对交换分区的引用会fstab停止已加载系统尝试将其用作交换区,但grub.cfg在系统之前加载(实际上负载系统)。

正如OP所指出的,简单地grub.cfg使用重新创建文件grub2-mkconfig -o /boot/grub2/grub.cfg并没有帮助,因为设置/etc/default/grub仍然存在。

解决方案

正如给出的评论经过来源绝地第一步是编辑该/etc/default/grub文件,删除对旧交换分区的引用。如果您有新的交换分区,或者刚刚重新格式化了交换分区,请将旧的 UUID 替换为新的 UUID。如果您现在没有交换分区,请删除resume=....该行的部分。不要删除整条线,保留其他内容。如果唯一的是对旧交换分区的引用,请将行更改为GRUB_CMDLINE_LINUX_DEFAULT=""

参考固定后,现在第二步是grub.cfg使用命令重建文件

grub2-mkconfig -o /boot/grub2/grub.cfg

当然,如果您的系统使用不同的位置来存放该grub.cfg文件,请将其替换为该-o选项的参数。例如,iirc,Centos 将其放置在/boot/efi/EFI/centos/grub.cfg其中将使命令

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

我可能是错的,因为我已经有一段时间没有使用 Centos 了。底线是grub.cfg在运行命令之前找到位置。


笔记:

文件的顶部/etc/default/grub可能会准确地告诉您在对其进行更改后要运行的命令。

对丢失磁盘的引用可能不是dev-disk-by\x2duuid-...,它可能是旧的指定,例如dev-sda3dev/sda3在默认文件中),或者使用标签而不是 UUID,例如dev-disk-by\x2dlabel-SWAPdev/disk/by-label/swap在默认文件中)。

如果您使用 GUI 系统配置编辑器(例如 SUSE 中的 Yast),最好在那里进行更改,因为编辑器的文件可能会将数据存储在其他位置,并在下次使用时恢复它,使您回到开始的位置。例如,在 openSUSE 中,可以在 Yast -> 系统 -> 引导加载程序 -> 内核参数 -> 可选内核命令行参数中找到。


但对于评论经过来源绝地,我“错过”了,因为我正在阅读“答案”而不是评论,我仍然会追踪问题,或者追着我的尾巴。

相关内容