首先,我假设驱动器和/或分区从头到尾都有一个线性地址。情况肯定是这样,否则像这样的程序dd
就无法起到复制机制的作用。
引导扇区是否几乎总是在这个字节数组中地址为 0?我想这取决于该驱动器上使用的文件系统?
抱歉我真的不懂这些低级的东西,我想学习!
答案1
是的,对于 MBR,引导扇区始终位于扇区 0。硬盘驱动器被划分为扇区,传统上扇区大小为 512 字节,但 4TB 以上的驱动器开始使用 4096 字节扇区。
您必须读取或写入整个扇区。
如今,逻辑块分配 (LBA) 具有从 0 到驱动器容量的标准扇区级数。
古代的硬盘其实是使用柱面、磁头和扇区,每个磁头容纳多个扇区,每个柱面容纳多个磁头。
文件系统不是从扇区 0 开始,而是分区表指示分区的开始,因此文件系统不参与此操作。
此外,GPT 已开始取代 MBR,因为 MBR 的限制约为 2.2TB,并且以复杂的方式表示超过 4 个主分区。您需要逻辑分区,并且每个扩展分区可以包含许多逻辑分区。
GPT 消除了许多复杂性并更新和简化了事物。
这里有更多细节。
答案2
首先,我们需要指定使用的分区方案。PC 的经典分区方案是 MBR,它与此分区方案中的磁盘第一个块(逻辑块地址 #0)共享名称:主引导记录。因此,MBR 分区问题标题的答案是是的。
主引导记录最多包含 446 字节的引导代码、主分区的分区表(每个分区仅 16 字节)和引导签名(2 字节)。在每个 16 字节的分区条目中,只有 4 个字节实际上可用于指定现代磁盘上分区的第一个块,只有 4 个字节可用于指定分区中的块数。因此,MBR 分区的起点必须在磁盘开头的 (2^32 - 1) 个块内,并且 MBR 分区的大小必须为 (2^32 - 1) 个块或更少。实际上,这将 MBR 分区的实用性限制在 2 TB 或更小的磁盘上。
传统上,MBR 引导代码只会识别活动主分区,加载该分区的第一个块(有时称为分区引导记录,或 PBR)并执行它。然后,PBR 将包含特定于操作系统的引导程序。但现代引导加载程序(如 Linux 的 GRUB 或某些全盘加密解决方案)可能希望执行更复杂的事情,因此无法容纳在单个块中。
在旧磁盘中,当磁柱/磁头/扇区几何值实际上具有实际意义时,磁盘第一个磁头的整个第一个磁道仅保留给 MBR 块:惯例是从磁道的开头开始每个分区,因此由于磁道 #0 的第一个块被 MBR 占用,因此整个磁道被跳过,第一个分区将从磁道 #1 开始。因此,MBR 块之后的磁道 #0 上的扇区可供更高级的引导加载程序使用。在 MBR 分区的磁盘上,GRUB 引导加载程序通常会在其中嵌入其自身的至少一部分。
在 LBA 寻址成为常态的现代磁盘上,建立了一个新的约定:第一个分区通常从逻辑块地址 #2048 开始,或者正好从磁盘开头 1 MiB 开始。这将确保即使磁盘内部以某个 2 的幂的组来处理块,第一个分区的开头仍将与此类块组的开头对齐。在 RAID 阵列和其他较大的存储系统上,例如数据对齐是充分发挥存储性能的重要部分。但其副作用是,这一新约定可能会导致 MBR 块和第一个分区开头之间出现更多“浪费”空间。
2011 年,英特尔 Sandy Bridge 微架构发布后,新的 UEFI 固件被推向大众,并最终取代了传统的 BIOS。随之而来的是新的分区方案:GUID 分区表或简称为 GPT。由于 MBR 有一个相当基本的最大大小限制,即 2 TB(假设标准块大小为 512 字节),因此需要一种新的方案。
GPT 分区方案实际上包含一个“保护性 MBR”:GPT 分区磁盘的第一个块(LBA #0)包含一个有效的 MBR 块,对于仅理解 MBR 样式分区的系统来说,它本质上是说“此磁盘已完全分配给您不知道的分区类型,请勿触碰”。从 LBA #1 开始是 GPT 的实际分区表数据。它允许分区大小增长到 ZB 范围 - 在可预见的未来这应该足够了。
GPT 分区方案消除了 MBR 的限制:
- 使用 GPT,不再有每个磁盘只有 4 个主分区的限制。
- MBR 样式的主/扩展/逻辑分区划分不再存在:从这个意义上来说,所有分区都是平等的。
UEFI 固件还指定了新的引导加载程序方案。引导加载程序不再在磁盘上具有固定位置。相反,固件将具有从 FAT32 类型文件系统读取文件的内置能力,引导加载程序将只是标有特定分区类型 GUID 的 FAT32 分区上的常规文件。这样的分区称为 ESP 或 EFI 系统分区。(UEFI 固件标准是从 EFI 固件开发而来的,主要存在于 Intel Itanium 系统上,引导加载程序分区的名称和结构从那里继承而来。)
因此,对于其他分区方案(包括 GPT),您不能假设引导扇区是驱动器上的第一个块 - 事实上,您不能假设引导扇区甚至存在!
答案3
我想这取决于该驱动器上所使用的文件系统?
不。至少在 PC 兼容计算机上,它不能依赖于所使用的文件系统。
为什么?
BIOS 负责从硬盘加载引导扇区。由于它不知道所使用的文件系统,因此它总是会做同样的事情。这意味着:加载扇区 #0。
在非 PC 兼容系统上,引导扇区可能位于其他地方。
在具有 UEFI 的系统上,启动方式也不同。
顺便一提:
从 CD-ROM 启动时,BIOS 会搜索一个特殊扇区,该扇区可能位于扇区 #16 之后的某个位置(不能 100% 确定)。该扇区将包含有关实际启动扇区位置的信息。BIOS 必须理解此信息才能从 CD-ROM 加载启动扇区。
因此在 CD-ROM 上,引导扇区的位置确实不是 CD-ROM 的扇区 #0。
答案4
据我所知,“引导扇区”这个术语似乎含义不明确。它可以指第一阶段引导加载程序,又称“初始引导加载程序”,它是 MBR 的第一部分,是硬盘驱动器第一个扇区的开头。或者,它可以指“分区引导扇区”,这是分区设备上“卷引导记录”的术语,它位于分区的开头
例如https://en.wikipedia.org/wiki/Volume_boot_record “卷引导记录 (VBR)(也称为卷引导扇区、分区引导记录或分区引导扇区)是 IBM 个人计算机引入的一种引导扇区。它可能位于分区数据存储设备(如硬盘)或未分区设备(如软盘)上,并包含存储在设备其他部分的引导程序(通常但不一定是操作系统)的机器代码。在非分区存储设备上,它是设备的第一个扇区。在分区设备上,它是设备上单个分区的第一个扇区,整个设备的第一个扇区是包含分区表的主引导记录 (MBR)。
和https://en.wikipedia.org/wiki/Boot_sector “本文是关于引导扇区的通用概念。对于 PC 中的 VBR,请参阅卷引导记录。对于 PC 中的 MBR,请参阅主引导记录。”<-- 因此您会看到,该术语可能指两者之一。
另请参见这里,它在一本书中以一种含义使用,而在另一本书中则以另一种含义使用。