装机、做系统必备:硬盘分区表和UEFI BIOS的知识
很多网友询问mbr和gpt的问题,涉及到硬盘操作系统的安装,其实除了mbr和gpt分区表,uefi bios也是和操作系统紧密联系在一起的,下面我们就来聊聊硬盘分区表和uefi bios的知识。
从intel 6系列主板之后,就开始提供uefi bios支持,正式支持gpt硬盘分区表,一举取代了此前的mbr分区表格式,不过为了保持对老平台的兼容,微软即使最新的windows 10系统也继续提供了对mbr分区表格式的支持。
mbr和gpt分区表详解
全新硬盘(未初始化)装系统之前,必须对齐进行分区,硬盘分区初始化的格式包括mbr和gpt两种。当然对于基于powerpc的mac电脑还有专门的apple分区图,在这里就不做介绍。
mbr的全称是master boot record(主引导记录),mbr早在1983年ibm pc dos 2.0中就已经提出。之所以叫“主引导记录”,是因为它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。
主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录mbr、硬盘分区表dpt和硬盘有效标志。在总共512字节的主引导扇区里mbr占446个字节,偏移地址0000h--0088h),它负责从活动分区中装载,并运行系统引导程序;第二部分是partition table区(dpt分区表),占64个字节;第三部分是magic number,占2个字节。
mbr分区表系统
所谓启动加载器,是一小段代码,用于加载驱动器上其他分区上更大的加载器。如果你安装了windows,windows启动加载器的初始信息就放在这个区域里——如果mbr的信息被覆盖导致windows不能启动,你就需要使用windows的mbr修复功能来使其恢复正常。如果你安装了linux,则位于mbr里的通常会是grub加载器。
分区表偏移地址为01beh--01fdh,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4,分别对应mbr的四个主分区。
magic number也就是结束标志字,偏移地址01fe--01ff的2个字节,固定为55aa,如果该标志错误系统就不能启动。
mbr最大支持2.2tb磁盘,它无法处理大于2.2tb容量的磁盘。mbr还只支持最多4个主分区——如果你想要更多分区,你需要创建所谓“扩展分区”,并在其中创建逻辑分区。
gpt的全称是globally unique identifier partition table,意即guid分区表,它的推出是和uefi bios相辅相成的,鉴于mbr的磁盘容量和分区数量已经不能满足硬件发展的需求,gpt首要的任务就是突破了2.2t分区的限制,最大支持18eb的分区。
gpt分区表系统
而在分区数量上,gpt会为每一个分区分配一个全局唯一的标识符,理论上gpt支持无限个磁盘分区,不过在windows系统上由于系统的限制,最多只能支持128个磁盘分区,基本可以满足所有用户的存储需求。在每一个分区上,这个标识符是一个随机生成的字符串,可以保证为地球上的每一个gpt分区都分配完全唯一的标识符。
而在安全性方面,gpt分区表也进行了全方位改进。在早期的mbr磁盘上,分区和启动信息是保存在一起的。如果这部分数据被覆盖或破坏,事情就麻烦了。相对的,gpt在整个磁盘上保存多个这部分信息的副本,因此它更为健壮,并可以恢复被破坏的这部分信息。gpt还为这些信息保存了循环冗余校验码(crc)以保证其完整和正确——如果数据被破坏,gpt会发觉这些破坏,并从磁盘上的其他地方进行恢复。
小结:所以对于新平台用户(intel 6系以后/amd 900系列以后和a系列)来说,都强烈推荐使用gpt分区表格式,目前包括windows vista、7、8、8.1、10已经都支持读取和使用gpt分区表。而对于使用windows 8、8.1、10的用户,换用gpt后开机启动速度也可以进一步得到显著提升。
uefi bios详解
uefi的全称是unified extensible firmware interface,意即统一可扩展固件接口,它是基于efi 1.10标准为基础发展而来,值得注意的是在uefi正式确立之前,intel就开始积极推进传统bios的升级方案,并最终确立了过渡方案efi标准,直到2007年intel将efi标准的改进与完善工作交给unified efi form进行全权负责,efi标准则正式更名为uefi。
传统bios界面
相比传统bios,uefi最大的几个区别在于:
1、编码99%都是由c语言完成;
2、一改之前的中断、硬件端口操作的方法,而采用了driver/protocol的新方式;
3、将不支持x86实模式,而直接采用flat mode(也就是不能用dos了,现在有些 efi 或 uefi 能用是因为做了兼容,但实际上这部分不属于uefi的定义了);
4、输出也不再是单纯的二进制code,改为removable binary drivers;
5、os启动不再是调用int19,而是直接利用protocol/device path;
6、对于第三方的开发,前者基本上做不到,除非参与bios的设计,但是还要受到rom的大小限制,而后者就便利多了。
7、弥补bios对新硬件的支持不足的问题。
uefi和gpt是相辅相成的,二者缺一不可,要想使用gpt分区表则必须是uefi bios环境。uefi于用户而言最典型的特征就是使用了图形化界面,虽然还未达到操作系统界面的图形交互功能,但人性化的界面、鼠标的操作,已经将bios变得非常易用,对于不少电脑初级用户来说也可以很好的查看和设置bios的相关选项和功能。
uefi bios界面
除了图形化界面,uefi相比传统bios,还提供了文件系统的支持,它能够直接读取fat、fat32分区中的文件,例如华硕、华擎等主板在uefi bios环境下更新bios就可以直接读取u盘中的bios及其他文件,另外新的uefi主板基本都提供了截屏功能,这些截屏图片都可以存储在u盘当中。
uefi还有一个重要特性就是在uefi下运行应用程序,这类程序文件通常以efi结尾。利用uefi可以直接识别fat分区中的文件,又有可直接在其中运行应用程序。我们就可以将windows安装程序做成efi类型应用程序,然后把它放到任意fata分区中直接运行即可。
uefi启动顺序
uefi的模块化设计,它在逻辑上分为硬件控制与os(操作系统)软件管理两部分,硬件控制为所有uefi版本所共有,而os软件管理其实是一个可编程的开放接口。借助这个接口,主板厂商可以实现各种丰富的功能。比如我们熟悉的各种备份及诊断功能可通过uefi加以实现,主板或固件厂商可以将它们作为自身产品的一大卖点。uefi也提供了强大的联网功能,其他用户可以对你的主机进行可靠的远程故障诊断,而这一切并不需要进入操作系统。
当然由于uefi主要由高级语言编写(c语言),相比于传统bios的汇编语言,uefi bios在安全防护性方面相比传统bios要弱,比较容易遭到病毒的攻击,安全性有待进一步提升。不过在图形化界面、应用程序扩展面前,uefi bios还是非常成功的。
one more thing...
聊完了mbr/gpt分区表和uefi bios,下面我们就来介绍下uefi下安装windows系统,上面已经讲到uefi和gpt是相辅相成的,如果使用uefi模式安装windows系统,那么硬盘分区表必须是gpt。
备注:主板为了兼容mbr分区表,一般会提供legacy bios和uefi bios启动模式选项,如果要使用uefi模式安装windows,就必须开启uefi启动模式。
目前64bit windows vista、7、8、8.1、10都已经支持gpt分区表,而windows 8、8.1、10都已经原生支持uefi,安装这些系统的时候:只要硬盘设置为gpt分区表 主板设置为uefi启动后,就可以直接开始安装操作系统了。
而对于windows vista、7系统,就需要手动添加uefi支持,我们可以找一份windows 8或者10安装镜像,从安装文件中提取bootmgfw.efi文件,重命名为bootx64.efi,拷贝到win7安装文件的\efi\boot\下,如果没有boot文件夹就新建一个。