硬盘基础知识
MBR与GPT
MBR
MBR(Master Boot Record)主引导记录 —— 硬盘上最重要的一个数据结构
早期的Linux系统和Windows使用MBR的方式来处理开机管理程序与分区表
- MBR处于硬盘的第一个扇区.即0柱面,0磁头,1扇区.
- 第一个扇区 512Bytes 会有这两个数据:
- 主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446
Bytes(偏移0H~偏移1BDH)。 - 磁盘分区表(Disk Partition Table,DPT):记录整颗硬盘分区的状态,有64 Bytes(偏移1BEH~偏移1FDH)。
- 最后的两个字节”55 AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。
- 主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446
由于分区表所在区块仅有64 Bytes容量,因此最多仅能有四组记录区原因是分区信息需要16字节来表示,详见链接——硬盘分区表项的16个字节分配。最大支持2.19TB(2的32次方(只能记录4字节来存储逻辑块地址和大小信息,具体见链接)*512byte(扇面单位))。
1~100等数据只是随意的例子。
四组记录代表只能有四个主要(Primary)分区或延伸(Extended)分区(操作系统限制只能有一个延伸分区)。前者是可用于引导的系统分区。而在实际上,你可以将一颗硬盘分区成十个以上的分区。通过延伸分区(Extended)的方式来处理。
- P1为主要分区,P2为延伸分区。
- 延伸分区的目的是使用额外的扇区来记录分区信息,延伸分区本身并不能被拿来格式化。
- 通过延伸分区所指向的那个区块继续作分区的记录。
- 如上图右下方那个区块有继续分区出五个分区, 这五个由延伸分区继续切出来的分区,就被称为逻辑分区(logical partition,逻辑分区的数量依操作系统而不同)。
- 逻辑分区之间可以整合等操作,但是延伸分区和主分区如果整合操作,眼神分区里所有的逻辑分区都会出现问题(分区记录在延伸分区中)
GPT
GPT (GUID(Globally Unique Identifier) partition table)全局唯一标识磁盘分区表 ——是一个实体硬盘的分区表的结构布局的标准。
GUID貌似跟GPT采用的CHS寻址方式有关,不细究,有兴趣可看链接——【FAQ】存储基础知识 - 磁盘寻址(CHS寻址方式、LBA寻址方式)这里写链接内容。
- 不同于过去512Bytes的扇区大小,之后出现了4K的扇区设计。因此,GPT使用逻辑区块位址(Logical BlockAddress, LBA)来处理,但默认还是为512bytes。第一个为LBA0。
- 与MBR使用第一个512Bytes区块来记录不同,GPT使用了34个LBA区块来记录分区信息。
- GPT 除了前面 34 个LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份。
- LBA0 (MBR 相容区块)
- 前 446 Bytes 与MBR类似,储存了第一阶段的开机管理程序(启动过程下文会提到)。
- MBR原本的分区表的记录区内,放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式。 不支持GPT 分区表的磁盘管理程序就无法识别。
- LBA1 (GPT 表头纪录)
- 纪录了分区表本身的位置与大小。
- 纪录了备份用的 GPT 分区 (最后 34 个 LBA 区块) 放置的位置。
- 放置了分区表的检验机制(CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,可以通过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运行。
- LBA2-33 (实际纪录分区信息处)
- 从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,默认的情况下,总共可以有 4*32(分区记录LBA数量) = 128 笔分区纪录。
- 除了每笔纪录所需要的识别码与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码。
- 对于每个扇区大小为512字节的磁盘,那意味着可以有9.4ZB(9.4 x 10^21字节)或18 E 个512字节(9,444,732,965,739,290,426,880字节 或 18,446,744,073,709,551,615(2^64-1)个扇区 x 512(=2^9)字节每扇区)。
- GPT 分区已经没有所谓的主、延伸、逻辑
分区的概念,每笔纪录都可以独立存在, 每个都可以视为是主分区并格式化使用。
GPT分区格式需要操作系统,硬件的支持。和开机的检测程序有关,也就是Legacy BIOS BIOS与UEFI。见下文。
Legacy BIOS
操作系统事实上也就是一个软件,那么硬件是如何和软件相互协作开机的呢?也就是通过开机程序。
目前的主机系统在载入硬件驱动方面的程序,主要有早期的 BIOS 与新的 UEFI 两种机制。
BIOS等相关信息
RAM(Ramdom Access Memory)
易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等。ROM(Read Only Memory)只读存储器
断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用。CMOS(Complementary Metal OxideSemiconductor)互补金属氧化物半导体
微机主板上的一块可读写的RAM芯片,主要用来保存当前系统的硬件配置和操作人员对某些参数的设定。CMOS RAM芯片由系统通过一块后备电池供电,因此无论是在关机状态中,还是遇到系统掉电情况,CMOS信息都不会丢失。
由于CMOS RAM芯片本身只是一块存储器,只具有保存数据的功能,所以对CMOS中各项参数的设定要通过专门的程序。早期的CMOS设置程序驻留在软盘上的(如IBM的PC/AT机型),使用很不方便。现在多数厂家将CMOS设置程序做到了 BIOS芯片中,在开机时通过按下某个特定键就可进入CMOS设置程序而非常方便地对系统进行设置,因此这种CMOS设置又通常被叫做BIOS设置。
BIOS(Basic Input/Output System)基本输入输出系统
和老BIOS说永别 EFI BIOS技术解析。这篇文章阐述了BIOS过渡到EFI的过程及原因。它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。即BIOS就是在开机的时候,计算机系统会主动执行的第一个程序。
开机流程
以硬盘为例,BIOS会依据使用者的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。
MBR这个仅有446 Bytes的硬盘容量里面会放置最基本的开机管理程序。
接下来运行MBR内的开机管理程序。
载入(load)核心文件, 由于开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件, 然后接下来就是核心文件的工作,也就将控制交付给了操作系统。
- BIOS:开机主动执行的固件,会认识第一个可开机的设备;
- MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;
- 开机管理程序(boot loader):一支可读取核心文件来执行的软件;
- 核心文件:开始操作系统的功能…
tips:
相容性——如果分区表为 GPT 格式的话,那么 BIOS 也能够从 LBA0 的 MBR 相容区块读取第一阶段的开机管理程序码, 如果开机管理程序支持 GPT,那么使用BIOS 同样可以读取到正确的操作系统核心。反之例如 Windows XP 的环境,无法读取核心文件,开机失败。文末附上操作系统的分区兼容性。
grub等其他开机管理程序——LBA0 仅提供第一阶段的开机管理程序码,如果使用类似 grub 的开机管理程序,要额外“ BIOS boot ”的分区, 这个分区能够放置其他开机过程所需的程序码,在 CentOS 当中,这个分区通常占用 2MB 左右。
BIOS与MBR是硬件本身会支持的功能,Boot loader则是操作系统安装在MBR上面的一套软件,且限制在MBR 446 Bytes的大小中,功能主要如下:
- 提供菜单:使用者可以选择不同的开机项目
- 载入核心文件:直接指向可开机的程序区段来开始操作系统
- 转交其他loader:将开机管理功能转交给其他loader负责
Windows及Linux双系统开机示意:
Windows、Linux双系统安装顺序:
UEFI BIOS(搭配GPT)
UEFI (Unified Extensible Firmware Interface) 统一可延伸固件接口
取代 BIOS,因此也称 UEFI BIOS 。
Legacy BIOS只能通过GPT的相容性来进行启动,UEFI BIOS才能真正支持GPT,并利用到它的种种便利性,详见之前的链接。
secure boot机制
防止cracker借由 BIOS 开机阶段来破坏系统,并取得系统的控制权,UEFI而加入的机制,会出现在BIOS设置中。有时开启不能顺利进入系统。
uefi启动全部过程是怎么样的?。这个链接有较详细的UEFI和BIOS启动的流程。
附加资料
BIOS设置之UEFI/Legacy BIOS切换图文详解。
如何选择超过2T和3T及以上硬盘的MBR与GPT分区形式。此链接中包括windows系统的兼容性问题。
UEFI是什么?与BIOS的区别在哪里?UEFI详解!。此链接关于在使用GPT作为系统分区的格式的系统安装。
win8/win8.1 UEFI + GPT 安装详细图解.当然,win10也几乎一样。
亲测UEFI启动模式的电脑安装Win10和Ubuntu双系统。