本工作室主要是写一些技术文章和心得,如有问题,可联系本工作室。

微信:15312167779
QQ:149824844

硬盘基础知识MBR、GPT介绍

MBR与GPT

MBR(MasterBoot Record)主引导记录—— 硬盘上最重要的一个数据结构
早期的Linux系统和Windows使用MBR的方式来处理开机管理程序与分区表

·        MBR处于硬盘的第一个扇区.即0柱面,0磁头,1扇区.

·        第一个扇区 512Bytes 会有这两个数据:

·        主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446
Bytes(偏移0H~偏移1BDH)。

·        磁盘分区表(Disk Partition Table,DPT):记录整颗硬盘分区的状态,有64Bytes(偏移1BEH~偏移1FDH)。

·        最后的两个字节”55 AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。

由于分区表所在区块仅有64 Bytes容量,因此最多仅能有 四组记录区原因是分区信息需要16字节来表示。 最大支持 2.19TB  2  32 次方(只能记录 4 字节来存储逻辑块地址和大小信息,具体见链接) *512byte (扇面单位))。 
  

1~100等数据只是随意的例子。

四组记录代表只能有四个主要(Primary)分区或延伸(Extended)分区(操作系统限制只能有一个延伸分区)。前者是可用于引导的系统分区。而在实际上,你可以将一颗硬盘分区成十个以上的分区。通过延伸分区(Extended)的方式来处理。

  
 

  • P1为主要分区,P2为延伸分区。

  • 延伸分区的目的是使用额外的扇区来记录分区信息,延伸分区本身并不能被拿来格式化。

  • 通过延伸分区所指向的那个区块继续作分区的记录。

  • 如上图右下方那个区块有继续分区出五个分区, 这五个由延伸分区继续切出来的分区,就被称为逻辑分区(logical partition,逻辑分区的数量依操作系统而不同)。

  • 逻辑分区之间可以整合等操作,但是延伸分区和主分区如果整合操作,眼神分区里所有的逻辑分区都会出现问题(分区记录在延伸分区中)

GPT

GPT (GUID(GloballyUnique Identifier)partition table)全局唯一标识磁盘分区表——是一个实体硬盘的分区表的结构布局的标准。

GUID貌似跟GPT采用的CHS寻址方式有关,不细究,有兴趣可看链接——【FAQ】存储基础知识 - 磁盘寻址(CHS寻址方式、LBA寻址方式)

  • 不同于过去512Bytes的扇区大小,之后出现了4K的扇区设计。因此,GPT使用逻辑区块位址(LogicalBlockAddress, 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.4x 10^21字节)或18 E 个512字节(9,444,732,965,739,290,426,880字节 或18,446,744,073,709,551,615(2^64-1)个扇区 x512(=2^9)字节每扇区)。

·        GPT分区已经没有所谓的主、延伸、逻辑
分区的概念,每笔纪录都可以独立存在,每个都可以视为是主分区并格式化使用。

GPT分区格式需要操作系统,硬件的支持。和开机的检测程序有关,也就是LegacyBIOS BIOS与UEFI。见下文。

Legacy BIOS

操作系统事实上也就是一个软件,那么硬件是如何和软件相互协作开机的呢?也就是通过开机程序。

目前的主机系统在载入硬件驱动方面的程序,主要有早期的 BIOS 与新的 UEFI 两种机制。

BIOS等相关信息 

  • RAM(Ramdom Access Memory)
    易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等。

  • ROM(Read Only Memory)只读存储器
    断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用。

  • CMOS(Complementary MetalOxideSemiconductor)互补金属氧化物半导体
    微机主板上的一块可读写的RAM芯片,主要用来保存当前系统的硬件配置和操作人员对某些参数的设定。CMOSRAM芯片由系统通过一块后备电池供电,因此无论是在关机状态中,还是遇到系统掉电情况,CMOS信息都不会丢失。

由于CMOS RAM芯片本身只是一块存储器,只具有保存数据的功能,所以对CMOS中各项参数的设定要通过专门的程序。早期的CMOS设置程序驻留在软盘上的(如IBM的PC/AT机型),使用很不方便。现在多数厂家将CMOS设置程序做到了 BIOS芯片中,在开机时通过按下某个特定键就可进入CMOS设置程序而非常方便地对系统进行设置,因此这种CMOS设置又通常被叫做BIOS设置

  • BIOS(BasicInput/Output System)基本输入输出系统

它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。即BIOS就是在开机的时候,计算机系统会主动执行的第一个程序

开机流程 

以硬盘为例,BIOS会依据使用者的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。

MBR这个仅有446Bytes的硬盘容量里面会放置最基本的开机管理程序。

接下来运行MBR内的开机管理程序。

载入(load)核心文件, 由于开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件, 然后接下来就是核心文件的工作,也就将控制交付给了操作系统。

·        BIOS:开机主动执行的固件,会认识第一个可开机的设备;

·        MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;

·        开机管理程序(boot loader):一支可读取核心文件来执行的软件;

·        核心文件:开始操作系统的功能…

tips:

相容性——如果分区表为 GPT 格式的话,那么 BIOS 也能够从 LBA0 的 MBR 相容区块读取第一阶段的开机管理程序码, 如果开机管理程序支持 GPT,那么使用BIOS 同样可以读取到正确的操作系统核心。反之例如Windows XP 的环境,无法读取核心文件,开机失败。文末附上操作系统的分区兼容性

grub等其他开机管理程序——LBA0仅提供第一阶段的开机管理程序码,如果使用类似grub 的开机管理程序,要额外“BIOS boot ”的分区, 这个分区能够放置其他开机过程所需的程序码,在CentOS 当中,这个分区通常占用2MB 左右。

BIOS与MBR是硬件本身会支持的功能,Bootloader则是操作系统安装在MBR上面的一套软件,且限制在MBR 446Bytes的大小中,功能主要如下:

·        提供菜单:使用者可以选择不同的开机项目

·        载入核心文件:直接指向可开机的程序区段来开始操作系统

·        转交其他loader:将开机管理功能转交给其他loader负责

Windows及Linux双系统开机示意:


Windows、Linux双系统安装顺序:



UEFI BIOS(搭配GPT)

UEFI (UnifiedExtensible Firmware Interface) 统一可延伸固件接口

取代 BIOS,因此也称 UEFIBIOS 。

Legacy BIOS只能通过GPT的相容性来进行启动,UEFIBIOS才能真正支持GPT,并利用到它的种种便利性。

secureboot机制
防止cracker借由 BIOS 开机阶段来破坏系统,并取得系统的控制权,UEFI而加入的机制,会出现在BIOS设置中。有时开启不能顺利进入系统。

 

微信:15312167779(系统交流学习)

邮箱:149824844@qq.com

更多我的学习技术文章:

https://boysky123.lofter.com

https://user.qzone.qq.com/149824844


评论

© JC网络工作室 | Powered by LOFTER