![Fedora 尝试挂载不在 fstab 或 systemd 中的已删除交换分区](https://linux22.com/image/146553/Fedora%20%E5%B0%9D%E8%AF%95%E6%8C%82%E8%BD%BD%E4%B8%8D%E5%9C%A8%20fstab%20%E6%88%96%20systemd%20%E4%B8%AD%E7%9A%84%E5%B7%B2%E5%88%A0%E9%99%A4%E4%BA%A4%E6%8D%A2%E5%88%86%E5%8C%BA.png)
当在 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"
该行附加到linux
orlinuxefi
命令后,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-sda3
(dev/sda3
在默认文件中),或者使用标签而不是 UUID,例如dev-disk-by\x2dlabel-SWAP
(dev/disk/by-label/swap
在默认文件中)。
如果您使用 GUI 系统配置编辑器(例如 SUSE 中的 Yast),最好在那里进行更改,因为编辑器的文件可能会将数据存储在其他位置,并在下次使用时恢复它,使您回到开始的位置。例如,在 openSUSE 中,可以在 Yast -> 系统 -> 引导加载程序 -> 内核参数 -> 可选内核命令行参数中找到。