答案1
这些信息并不矛盾,因为两个级别或常规分区磁盘上的“引导扇区”阶段。换句话说,MBR 和 VBR 不是一回事 - 一个存在于分区外部,另一个存在于内部。
启动过程总是从 MBR 开始,即系统的第 0 个扇区整个磁盘它位于任何分区之外;实际上,分区表本身也存储在同一个扇区中。但 MBR 很小,不能包含太多代码——它的主要任务只是选择一个分区并跳转到该分区的扇区 0,又称其 VBR。
现在,如果您有一个未分区的磁盘(例如软盘或一些 USB 记忆棒),其文件系统(“卷”)直接从整个磁盘的扇区 0 开始,那么 MBR 和 VBR 恰好重叠。BIOS 仍然执行整个磁盘扇区 0 中的内容,但该“MBR”代码不需要跳转到另一个级别,它只是直接执行 VBR 会执行的操作。但在一般情况下,它们仍然是两个不同的东西。
以上是通用 PC BIOS 启动过程。但它并不是一成不变的——BIOS 本身实际上并不关心分区或卷,它只启动磁盘的 0 扇区,并让其关心其余部分。一旦启动 MBR 代码,它就可以做任何它想做的事情。
这意味着有些引导加载程序不要完全遵循 VBR 约定。GRUB 引导加载程序是自行执行操作的引导加载程序的主要示例 - 其 MBR 代码不会跳转到 VBR,而是跳转到固定位置的单独磁盘区域。GPT“BIOS 引导分区”也是 GRUB 的一项发明,其他引导加载程序不会使用它。
最后,现代 UEFI 系统根本没有引导扇区。它们可以使用 MBR 格式的磁盘,但它们完全忽略存储在 MBR 或 VBR 中的实际引导代码。相反,UEFI 系统始终使用存储在“EFI 系统分区”中的实际文件进行引导。
答案2
在传统 MBR 模式下,引导扇区可以位于磁盘的开头或分区的开头。引导扇区很小,不是分区。
UEFI 完全不同,它不使用引导扇区 - 而是使用适当格式和标记的分区中的文件。
答案3
基本上,对于传统的 MBR,有两种类型的引导扇区,“主引导记录”和“卷引导记录”。
分区是硬盘的一部分,由分区表定义。
对于 MBR(不是 GPT)来说,这很简单。有几个字节,一个字节决定分区类型(加 128 表示“可启动”),其他字节表示分区从哪个扇区开始以及大小。
让我们看一个真正的分区表,这是fdisk -l /dev/sda
我的 Linux 系统上的输出。这将以人性化格式提供表格。信息包括分区、启动标志(* = boot)、起始扇区、大小、结束扇区(根据起始 + 大小计算)和类型(fdisk 有一个命名的类型列表)。
/dev/sda1 * 2048 999423 997376 487M fd Linux raid autodetect
/dev/sda2 999424 31277055 30277632 14.4G fd Linux raid autodetect
如您所见,第一个分区不是从扇区 0 开始的。每个扇区 2048 * 512 字节意味着该磁盘的前 1 兆字节不属于任何分区。
由于各种原因,这种情况很常见,但分区表和旧式 MBR 引导代码仅使用扇区 0 中的 512 个字节。其中的前 66 个字节是 64 字节分区表和 2 字节签名,用于告诉旧式 BIOS 分区表位于此处。根据操作系统的不同,MBR 的其他区域可能用于表示其他内容。
扇区 1-2047 可由引导加载程序、磁盘实用程序等使用。
“卷引导记录”只是每个分区的第一个扇区。因此,此磁盘的扇区 2048 和 999424 上有 VBR。
Windows MBR 将读取分区表,找到第一个可启动分区,并运行其 VBR。
- 第一个分区可以从 0 开始并包含 MBR 吗?
是的,但是 A) 操作系统必须预料到这种情况,并且 B) 如果您希望其他操作系统在硬盘上共存,那么这是一个坏主意。我可以想象大多数操作系统都会拒绝启动或安装这种类型的分区,但我从未尝试过。
- 第一个分区可以从 1 扇区开始吗?
是的,但是由于“高级格式驱动器”内部的扇区大小为 4096,您需要该数字能够被 8 整除,因为出于各种原因,这会影响性能。
- 第一个分区可以从第 8 扇区开始吗?
是的,但是有些依赖前 1M 空闲空间的东西将无法工作。我认为 Linux GRUB 引导加载程序就是其中之一。
- 分区之间可以有缝隙吗?
当然。这将是遵守 MBR 的操作系统不会触及的空间。
- 可以有重叠分区吗?
是的,但这显然是个坏主意。不知道操作系统如何处理它。一些旧的操作系统(如 DOS)可能不会检查,可能会崩溃或出现严重故障。其他操作系统可能会拒绝安装分区。
- 您可以在物理磁盘的末尾进行分区吗?
往上看。