我使用 dnf system-upgrade 将 32 位 Fedora 28 升级到 30,与 Fedora 文档中所述完全一致。一切正常,直到 dnf system-upgrade 重新启动。启动的系统已升级软件包,并进行了清理和验证。经过数小时后,系统已重新启动,但 grub 无法启动,并进入 grub 命令模式。
使用 CD 救援盘,我使用 fdisk 和 fsck 验证了硬盘及其上的每个分区。没有遇到问题。我在 /boot/ 中进行了验证,发现 vmlinuz 和 initramfs 具有预期的结尾和看起来不错的大小。
但是 /boot/grub2/grub.cfg 很奇怪,与通常的结构非常不同。
我使用配置文件 /grub2/grub.cfg.rpmsave 从 grub 命令行启动,并且能够像在 Fedora 28 下一样启动。我尝试使用 grub2-mkconfig 生成临时 grub.cfg,并将其放在 /tmp/ 中,以便将其与 /boot/grub2/grub.cfg 进行比较。结果:完全相同。
我该怎么做才能使系统如预期的那样像 Fedora 30 一样运行良好?
运行这个旧内核 28 时运行 dnf 更新是个好主意吗?
答案1
我遇到了同样的问题。显然,如果您的 Fedora 安装足够旧,那么就会出现此问题。我从早期版本升级到 29,然后是 30。升级到 30 后,它会启动到提示符grub>
。
最后,我听从了关于跑步的建议grub2-install
的建议Fedora 项目中常见的 F30 错误
我使用安装盘在故障排除/救援模式下进行操作grub.cfg
。我执行的步骤如下:
- 复制当前(30)以用于未来:
cp grub.cfg grub.cfg.new
- 复制旧(29):
cp grub.cfg.rpmsave grub.cfg
- 重新启动,进入 29。
- 登录,运行
grub2-install /dev/{boot drive}
(对我来说,{boot drive}
是sda
) - 已重新启动,但说实话我不确定这是否有必要
- 登录后,将当前(3)
grub.cfg
放回原位:cp grub.cfg.new grub.cfg
- 重新启动 – 显示 FC 30 并且启动正常
- 重新运行
grub2-install
只是为了获得 FC30 所拥有的一切,而不是 FC29 - 重新启动、登录、运行
dnf update
答案2
该过程最重要的部分是在新升级的 FC30 系统中运行 grub2-install。在我看来,运行这个可能就足够了。根据引导过程停止的状态,您必须在 GRUB2 shell 上输入不同的命令才能启动系统。上面提到的“configfile”命令允许我使用旧内核启动。编辑提供的 GRUB2 启动条目并在“linux”命令中添加适当的“root=”后缀使我有机会在另一种情况下使用新内核启动。系统运行后,在 root shell 中输入前面提到的“grub2-install”。