在 Debian Wheezy 上,如何查找/更改 GRUB 2 在重写时的安装位置?

在 Debian Wheezy 上,如何查找/更改 GRUB 2 在重写时的安装位置?

我有一个 Debian Wheezy 系统。在最近的一次升级中,我收到一条来自 GRUB 的错误消息,告诉我 ext2 文件系统不支持嵌入(嗯?以前从未见过这个。),经过一番挖掘后,问题似乎是我将 GRUB 安装到了/dev/md0的引导记录,直接格式化(MD容器内没有分区)。

我可以通过手动指向grub-install原始磁盘设备(在 GRUB 中(hd0))来解决这个问题,但我有一种感觉,下次 GRUB 更新时,这个问题会再次出现。

这导致我开始寻找 GRUB 安装位置实际存储在 Wheezy 上的位置。然而,搜索md0并没有产生任何有趣的结果。

因此我的问题是:特别是在 Debian Wheezy 上,GRUB 安装位置到底在哪里设置?换句话说,如果我想将 GRUB 设置从分区引导记录更改为主引导记录,那么我需要更改哪些特定文件(以及该文件中的设置)?

答案1

所以问题是,grub 可能会假设因为 /boot 位于 /dev/md0 上并且 (hd0) 在 device.map 中指示为 /dev/md0,所以 MBR 应该位于 /dev/md0 上,然后您会看到错误消息,因为 /dev/md0 没有 MBR。好消息是,原始的 MBR 和引导程序仍然位于您的 BIOS 引导设备上(可能是 /dev/sda),这就是您的系统引导的原因。这个较低级别的引导代码很少更改,因此如果不更新也不是一个大问题。您可能只需要忍受此错误消息,但是,您可以尝试/检查以下几件事:

  • 确保 BIOS 引导设备上没有其他引导分区,您根本看不到它,因为它尚未安装。如果您的 /etc/fstab 缺少 /boot 条目,则可能会发生这种情况
    • 它会显示为 ext2 或 ext4 分区,可能小于 500MB。
  • 重命名 device.map 因为 grub2 并不真正需要它,并且它可能会向安装后脚本和/或 grub 安装提供错误信息。
  • 然后,运行 grub-install /dev/sdX (其中 sdX 是您实际的 BIOS 引导设备)。 这将更新该设备上的 MBR 和引导代码,以防其过时。
    • 如果这不起作用,你可以这样做: grub-install --boot-directory=/boot /dev/sdX

您的配置有点奇怪,但应该在 grub2 中得到支持。最后,您可能只需要忍受错误消息并每年手动运行一次 grub-install。

相关内容