硬件分区格式、启动管理固件(一)

By Rui

本文只是对一些概念,一些逻辑进行论述,并不深入探索,如果有兴趣,可以阅读文中的链接。本文只是初稿,若有没写对的地方希望指教,稍后会做修改。

硬件分区格式 GPT,MBR

MBR + BIOS

GPT + UEFI

在win7、vista之后出现了GPT分区,但是没有UEFI,GPT只能作为数据盘。
UEFI的兼容模式也可以识别MBR。

MBR

MBR即主引导记录。MBR分区方案是传统的分区方案。MBR有四个主分区。硬盘空间被划分为很多区块(即sector扇区),用来提升硬盘访问效率(在寻址的时候),给每个扇区分配一个地址,即逻辑块地址(LBA)。

MBR分区模型

硬盘第一个扇区保存着启动代码和硬盘分区表。启动代码指引计算机从活动分区启动操作系统。MBR分区表大小固定,包括四个主分区。逻辑块地址采用32进制,一共可表示2的32次方个逻辑块地址,因此最多有2的32次方个扇区。

硬盘最大分区容量(如2TB) = 每个扇区的大小(如512字节) * 2^32

这就是说MBR分区模型上的计算机最多可利用2TB大小的硬盘。

GPT

从Vista、win7时代开始,为了解决硬盘容量限制问题,增加了GPT(GUID分区表)。GPT分区全名为Globally Unique Identifier Partition Table Format,即全局唯一标示磁盘分区表格式。GPT还有另一个名字叫做GUID分区表格式,我们在许多磁盘管理软件中能够看到这个名字。而GPT也是UEFI所使用的磁盘分区格式。

GUID分区表模型

GUID分区模型
GPT模型2

如图所示,PMBR类似于MBR的引导信息,在操作系统不支持GPT时,保护硬盘数据不被破坏。GPT有一个分区表和一个备份分区表,可以自定义分区大小,最多可以有128个分区(windows限制,有资料介绍实际无限),扇区逻辑块地址用64位表示,最大支持9.4ZB(9.4ZB=94亿TB)容量。
GPT分区的一大优势就是针对不同的数据建立不同的分区,同时为不同的分区创建不同的权限(具体方式?)。不能整盘复制,保证不同权限分区数据的安全性。
一块硬盘如果想从MBR分区转换成GPT分区的话,就会丢失硬盘内的所有数据。所以我们在更改硬盘分区格式之前需要先将硬盘备份,然后使用Windows自带的磁盘管理功能或者使用DiskGenius等磁盘管理软件就可以轻松地将硬盘转换成GPT(GUID)格式。
用闪存盘和硬盘做分区实验,会有不同的结果。在MAC下进行GPT分区会默认生成MBR/GPT混合分区表,在windows下闪存盘只能被识别第一个分区,而这个分区很有可能是GPT分区受保护的分区表,而非真正的分区。而用硬盘做实验,可以被正常识别。但是MBR只能有4个主分区,因此GPT分区超过4个的分区是不能被老windows系统识别的。

有帮助的链接:

希捷西数硬盘在win7和xp系统上的实践

实战UEFI安装WIN8

GPT/MBR分区实验 非常有帮助

启动管理

启动管理 UEFI,BIOS

还有一种是CORE BOOT

两者属于电脑固件的范畴(Firmware)。固件就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。 BIOS适用于兼容IBM PC系列。UEFI还可用于不兼容的系列,范围更广。

BIOS

BIOS是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息
BIOS安装系统的过程:BIOS知道你有哪些硬盘,你告诉BIOS你要安装的系统信息在哪张盘上,你要把系统安在哪张盘上(BIOS并不了解分区,进入boot loader后就不干BIOS的事了)。BIOS就会寻找盘上的”BOOT LOADER”并执行它,也就是我们前边儿说的MBR上的引导信息。

boot loader主要负责初始化硬件设备,建立内存空间的映射图。

存在的问题:
1.很多bootloader对MBR来说都太大了,一小部分被安装在MBR中,其他部分安装在磁盘的可用空间中。可用空间通常指MBR空间末尾和第一个分区起始位置之间。第一个分区的位置并不是固定的,因此我们并不知道是否有足够的空间来装载bootloader。
2.如果想要实现多盘多系统,需要操控bootloader的代码来实现,但是并没有一个实现标准。
3.不能从硬盘以外的地方导入配置操作系统。

UEFI

UEFI是统一的可扩展固件接口规范,EFI是可扩展固件接口,也就是按照UEFI这个规范所编写的最底层的接口程序,必须能够读取UEFI定义的可执行文件格式。这种格式是FAT格式的变种(包括FAT12,FAT16,FAT32)。同时,这种标准使得原生UEFI启动方式可以被自由编写。
对BIOS的MBR空间可能分配不足的解决方式是:EFI系统分区。这种分区是和GUID分区模型息息相关的。有关的驱动代码和文件都被放在这个分区,并且能够被枚举,因而UEFI甚至可以联网。
浅层理解为:EFI选择相应系统安装硬盘,读取GUID分区模型硬盘下的EFI系统分区的相关驱动代码和操作系统代码,并在选定的系统盘上顺序执行代码。
结构

UEFI有一个BIOS兼容模式:CSM。

完整的一篇UEFI的国外文档
对国外文档的翻译

如果你想进一步了解,反正我是读不下去了,14年初的。