磁盘分区和引导

硬盘寻址

老式硬盘采用C/H/S方式寻址,每个磁道扇区数是固定的63个。
C:柱面,0开始
H:磁头,即磁道,0-254
S:扇区,1-63

新式硬盘提高了密度,每个磁道扇区数不固定,因此需重新编号。
物理C/H/S按顺序编号,形成线性地址,即LBA。
扇区号从0开始,线性增加,直到最后一个扇区。

LBA扇区号也可以用C/H/S方式显示和使用。此时C/H/S是逻辑地址,而非物理地址。
第1个柱面的第1个磁道:扇区号从C0/H0/S1到S63,LBA扇区号从0到62。
第1个柱面的第2个磁道:扇区号从C0/H1/S1到S63,LBA扇区号从63到125。
依次类推,直到最后一个柱面的最后一个磁道的最后一个扇区:Cnnn/H254/S63。

物理扇区大小:512 Bytes
逻辑扇区大小:512 Bytes

BIOS & UEFI

一般BIOS启动MBR格式的硬盘,UEFI启动GPT格式的硬盘。
在已安装的操作系统内,两种硬盘格式都能识别。

BIOS只需启动MBR引导程序即可。
UEFI需要能读取GPT分区表、识别ESP文件系统、执行EFI引导程序等。

MBR

启动顺序:
BIOS –> MBR –> PBR(可选) –> OSLoader –> OS
通俗的讲,MBR/PBR/OSLoader是为了从BIOS启动OS,串联调用的程序。

示例:
Windows的MBR –> Windows的PBR –> Windows的BOOTRMGR
Windows的MBR –> GRUB4DOS的PBR –> GRUB4DOS的GRLDR
GRUB4DOS的MBR –> Windows的PBR –> Windows的BOOTRMGR
GRUB4DOS的MBR –> GRUB4DOS的GRLDR

#——————————————————————————

MBR

MBR(主引导记录)从硬盘的第一个扇区(C0/H0/S1,LBA扇区号0)开始,不同MBR占用不同的扇区数,但都在第一个磁道(即63个扇区)内,FBINST除外。
第一个磁道内未被占用的扇区将保留。因此,第一个分区至少从第二个磁道(C0/H1/S1,LBA扇区号63)开始。

硬盘的第一个扇区由Boot Loader、Disk Partition Table和Boot Record ID三部分组成。
Boot Loader即主引导程序,占用前446个字节(0~0x1BD),负责从活动分区装载操作系统引导程序。
Disk Partition Table即主分区表,占用64个字节(0x1BE~0x1FD),记录了硬盘的分区信息。共四个分区项,每项16字节,因此最多有4个主分区。
Boot Record ID即引导记录标记,占用两个字节(0x1FE~0x1FF)。值为0xAA55时标识为可引导的已分区硬盘,否则被认为是不可引导的未分区硬盘。

Windows 1个扇区
GRUB4DOS 16个扇区
GRUB2 63个扇区
FBINST 64个扇区 (需用FBINST重新分区)

#——————————————————————————

PBR

PBR(分区引导记录)从分区的第一个扇区开始,不同PBR占用不同的扇区数。
不同文件系统为PBR保留的扇区数不同。有些工具分区时可以修改保留的扇区数。
有些MBR不需要PBR,可以直接调用OSLoader,因此保留扇区中可以没有引导程序。

NTFS 1个扇区 (+15个可用扇区)
FAT32 1个扇区 (+1个间隔扇区+30个可用扇区)
EXT2/3/4: 1个扇区 (GRUB不使用PBR,因此扇区为空。可以写入其它PBR)

GPT

启动顺序:
UEFI –> ESP分区中的OSLoader –> OS

OSLoader示例:
/EFI/BOOT/bootx64.efi
/EFI/BOOT/grubx64.efi

#——————————————————————————

GPT硬盘结构

扇区号(0) Protective MBR,防止不支持GPT的工具误删除
扇区号(1) Primary GPT Header,分区表表头
扇区号(2-33) Partition Entry 1-128,每扇区4个分区表
…… ESP分区
…… MSR分区
…… 其它分区
扇区号-(2-33) Partition Entry 1-128,分区表备份
扇区号-(1) Secondary GPT Header,分区表表头备份,与Primary GPT Header不完全一致

簇 & 块

Windows簇和Linux块是文件系统分配空间的最小单元。小于一个单元的文件也会占用一个单元的空间。
NTFS: 4K
FAT32: 8K
EXT2/3/4: 4K

4K对齐

新硬盘每个物理扇区已由512Bytes改为4096Bytes,即4K。为了与原来兼容,仍模拟512Bytes扇区。
将4K物理扇区与操作系统的文件系统4K簇/块对齐,可以减少不必要的硬盘I/O,提高读写速度。
4K=8个512Bytes扇区,所以为了达到4K对齐的目的,分区起始位置是8扇区的倍数+1即可。

MBR引导时,第一个磁道(扇区号0-62)保留,因此第一个分区至少从第二个磁道起始扇区号63开始。
4K对齐时,分区从8扇区的倍数+1开始,因此第一个分区至少从扇区号64开始。
因第一磁道保留,1K(2扇区)对齐时,第一个分区也是从扇区号64开始的,也达到了4K对齐的目的。
因分区之间可能会有间隔,设置至少4K(8扇区)对齐是有必要的,也可以设置8K,16K,32K…对齐。

GPT引导时,第一个分区至少从扇区号34开始。
4K对齐时,至少从扇区号36开始。
原理与MBR一样。

posted on 2019-08-23 09:54  guanxi0808  阅读(1214)  评论(0)    收藏  举报

导航