引导扇区和多个驱动器如何工作?

GiH*_*GiH 18 boot windows-7 mbr ubuntu-9.04 multi-boot

我不完全理解引导扇区的概念,我希望有人能帮我解决这个问题。

如果您有两个硬盘驱动器,每个驱动器都安装了操作系统,那么每个驱动器都有自己的引导扇区吗?每个驱动器都需要一个 MBR 分区吗?

我在两个不同的驱动器上安装了 Linux 和 Windows。我在安装 Linux 和 grub 时遇到了问题,现在我终于决定使用 Windows 引导加载程序来启动。当我使用 /fixmbr 或它留在另一个驱动器的引导扇区时,Windows 会摆脱 grub 吗?

qua*_*ote 19

威尔的回答大致正确,但在技术上并不准确。是的,驱动器不需要 MBR。如果没有,您将无法从该驱动器启动,也无法在该驱动器上创建分区。但...

术语主引导记录通常用于指代两件事——它只是第一件事,通常被误用于第二件事:

  1. 一个位置,特别是分区数据存储设备的第一个 512 字节扇区(“LBA 扇区 0”)。此位置保存引导加载程序代码(第一阶段引导加载程序)的前 440 字节和主分区表。有关典型 MBR 结构的详细信息,请参阅 Wikipedia 的MBR 文章

  2. 存储在该位置的引导加载程序代码。在 BIOS 系统中,这是 BIOS 从驱动器启动时执行的第一个代码。请参阅MBR 和系统引导第一阶段引导加载程序:在 i386 系统上,此代码链加载第二阶段引导加载程序,存储在活动分区的卷引导记录中,它执行操作系统的实际引导。

卷引导记录分区引导扇区是分区的第一扇区并且是安装到该分区上的操作系统将存储其主引导程序代码。VBR 也用于未分区的数据存储设备(软盘、USB 闪存驱动器,甚至用于非分区角色的硬盘驱动器)。

多重引导系统使用引导管理器(例如 Grub)。引导管理器将自己的引导加载程序代码放入 MBR,并提供一个菜单,用户可以从中选择要引导的操作系统。(从技术角度讲,用户正在选择要使用的第二阶段引导加载程序。)


所以,直接回答你的问题:

  • 两个装有操作系统的硬盘驱动器将各自拥有自己的 MBR

    • 两个 MBR 都将包含至少一个分区。
    • 这些硬盘上的每个分区都有自己的 VBR。包含操作系统安装的分区将它们的第二阶段引导加载程序存储在这些 VBR 中;任何仅用于数据的分区(可能)在其 VBR 中都没有有效的引导代码。
    • 如果此系统启动,则这些 MBR中至少有一个将包含有效的第一阶段启动加载程序,但只有 BIOS 尝试启动的驱动器才需要它。

  • 当您将 Linux 安装到第二个驱动器时,它可能会将Grub 的第一阶段引导加载程序写入 Windows 驱动器的 MBR。它可能写了第一阶段的引导加载到自己的硬盘的MBR,但如果BIOS从来没有从Linux驱动尝试开机,你永远不会另行通知。同样,当您使用 /fixmbr 时,Windows 会在其系统驱动器的 MBR 上重写第一阶段引导加载程序。

    • 老实说,我不知道 Win-7 的 Bootrec.exe 实用程序是否也会写入其他驱动器的 MBR。它可能有能力这样做,但可能不是默认操作。
    • 我也不知道 Ubuntu 9.04 的安装程序是否会默认将 Grub 安装到两个驱动器的 MBR。如果需要,可以手动执行此操作。在某些情况下,这将是一件好事——如果您要断开 Windows 驱动器的连接并尝试从 Linux 驱动器引导,如果 Grub 的第一阶段引导代码不存在,您将无法引导。