删除旧交换区后如何从引导挂起中恢复?

Que*_*low 6 fedora boot partition swap lvm

在从旧版本升级失败后,我在硬盘的可用空间中全新安装了 Fedora 20。一切似乎都工作正常,直到我删除了包含旧版本的分区以释放一些空间。重新启动计算机后,等待很长时间后,我收到以下消息:

警告:无法启动

警告:/dev/fedora_old/swap 不存在

启动 Dracut 紧急外壳

exit如果我在 dracut 提示符下输入,我仍然可以启动。但是,这并没有解决问题的根源。网上有一些建议:

dracut --force --regenerate-all
Run Code Online (Sandbox Code Playgroud)

我不确定它到底做了什么,而且似乎并没有解决问题。整理交换分区的正确方法是什么?尽管新操作系统有自己的交换分区,但安装新操作系统时似乎仍在使用旧操作系统的交换分区。

以及我以后怎样才能避免这样的问题呢?

这就是我的目的/etc/fstab

/dev/mapper/fedora_new-root00 /          ext4    defaults                   1 1
UUID=somehexdec               /boot      ext4    defaults                   1 2
UUID=someotherhexdec          /boot/efi  vfat    umask=0077,shortname=winnt 0 0
/dev/mapper/fedora_new-home00 /home      ext4    defaults                   1 2
/dev/mapper/fedora_new-swap   swap       swap    defaults                   0 0
Run Code Online (Sandbox Code Playgroud)

小智 6

为了使其永久化,您需要更新/etc/default/grub以指向正确的交换分区。

示例:更改此:

GRUB_CMDLINE_LINUX="rd.lvm.lv=rootVG/root rd.lvm.lv=oldnameVG/swapLV rhgb quiet"
Run Code Online (Sandbox Code Playgroud)

对此:

GRUB_CMDLINE_LINUX="rd.lvm.lv=rootVG/root rd.lvm.lv=rootVG/swapLV rhgb quiet"
Run Code Online (Sandbox Code Playgroud)

完成后,您需要重新生成 grub 配置:

grub2-mkconfig -o /boot/grub2/grub.cfg
Run Code Online (Sandbox Code Playgroud)

您可以通过查看/boot/grub2/grub.cfg并验证交换现在是否指向正确的 VG/LV 来验证它是否有效


Que*_*low 1

看来手动编辑rd.lvm.lv=fedora_old/swapgrub 配置文件中包含的参数可以解决问题。根本不需要运行 dracut 或重新安装 grub。

# vi /boot/efi/EFI/fedora/grub.cfg
Run Code Online (Sandbox Code Playgroud)

在您将从中启动的菜单条目下搜索以下行:

linuxefi /vmlinuz-3.12.x-xxx.fc20.x86_64 root=/dev/mapper/fedora_new-root00 ro rd.lvm.lv=fedora_old/swap rd.lvm.lv=fedora_new/swap vconsole.font=....

为了确保上述更改得以保留,请对 执行相同的操作/etc/default/grub

GRUB_CMDLINE_LINUX=“ rd.lvm.lv=fedora_old/swap rd.lvm.lv=fedora_new/swap vconsole.font=...

如果此方法有误,请给出答案或发表评论。