FreeBSD:修复 MBR 引导代码

FreeBSD:修复 MBR 引导代码

由于某种原因,在我的系统上运行 11.4 引导代码失败。这正在调查中[1],但与此同时,我正在尝试将我的系统恢复到 11.3。

我正在尝试找出恢复旧引导代码的正确方法。我想这最终会是对 的一些调用gpart bootcode -b xxx ...,但我不确定什么是正确的。或者也许这就是bsdlabel -b ...所需要的?

以下是事件的简要时间表:

  1. 我有一个正在运行的 11.3 系统
  2. 编译11.4源码( make buildworld, make kernel)
  3. 成功重启进入11.4内核
  4. 准备安装新用户区 ( adjkerntz -i, mergemaster -p)
  5. 安装新用户区 ( make installworld)
    • 我的理解是,这也适用于任何新的引导代码。真的吗?我还没有从 makefile 中找到可以做到这一点的确切调用。
  6. 重启进入新系统
    • 失败- 出现“BTX 已停止”错误

因此,当我试图找出实际问题时,我首先关心的是获得系统可启动增益。

我试图避免“从备份重新安装”核选项。我已经知道该怎么做了(:

相反,我试图让启动代码再次工作。

  • 也许我可以手动安装 11.3 启动代码并仍然运行我的 11.4 系统?
  • 我还保存着11.3的源代码;也许我可以重新安装它?

任何意见,将不胜感激。

[1]https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257722

答案1

错误链接中有一些血淋淋的细节,但本质上,我只需要这样做:

  • 通过 LiveCD USB 记忆棒启动
  • 在那里,跑cp /boot/loader MOUNTPOINT/boot/loader
    • 其中 MOUNTPOINT 是真实系统的根分区,安装在 LiveCD 内。所以,没有 MBR 更新或任何东西,它只是 /boot/loader 中需要更新的普通文件。

这样(在弄清楚 BIOS 选择了错误的驱动器之后),它又回到了在 11.4 系统中正确引导的状态。

不过,仍然需要弄清楚回归是什么时候引入的——请参阅错误报告以了解该进展。

相关内容