分享

细说装机的武功秘笈,深入剖析(Legacy BIOS和UEFI)

 sys_wutao 2018-03-21

启动

UEFI与Legacy+UEFI启动模式的区别,很多重装电脑操作系统的用户如果使用的是光盘启动,都要跟BIOS打交道,很多用户会发现,当进入Bios设置启动模式时,会发现有两种模式,即Legacy+UEFI和UEFI。因此小编接下来就跟大家讲讲这里两者之间的区别,感兴趣的朋友一起来看一下吧!

在说之前我们需要先了解下BOOT是什么?下面一起来看看BOOT、BIOS、UEFI之间区别介绍。

1. 什么是BOOT?

BOOT其实是你按开机键之后,在电脑微软操作系统运行之前就自动运行的一段小程序。表象上就是Windows引导画面之前那些黑屏蓝屏的英文那个阶段就是BOOT了。通过这段小程序,它就可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

2. 什么是BIOS?

BIOS它其实也是在电脑里的微软系统运行之前,但是BOOT出现后加载运行的一个预启动的操作环境程序,严格来算是软件。是一组固化到计算机内主板上一个ROM芯片上的程序,直译过来后中文名称就是”基本输入输出系统”。它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

重点是在很多教程中很多人都把它和BOOT混淆,很多BOOT设置,也叫BIOS设置了。但是严格起来说了,BOOT设置是说电脑一按开机键后,出现那段黑屏界面BOOT运行时,你按快捷键调出各种BOOT后的程序,例如BIOS的这个按键过程。而BIOS设置是,你必须按对快捷键,从BOOT进入BIOS程序后,在BIOS程序中的设置的这个过程。

编写语言:汇编语言编写的程序

作用:BIOS用于计算机硬件自检、CMOS设置、引导操作系统启动、提供硬件I/O、硬件中断等4项主要功能,因此BIOS程序可以分为若干模块,主要有Boot Block引导模块、CMOS设置模块、扩展配置数据(ESCD)模块、DMI收集硬件数据模块,其中引导模块直接负责执行BIOS程序本身入口、计算机基本硬件的检测和初始化,ESCD用于BIOS与OS交换硬件配置数据,DMI则充当了硬件管理工具和系统层之间接口的角色,通过DMI,用户可以直观地获得硬件的任何信息,CMOS设置模块就是实现对硬件信息进行设置,并保存在CMOS中,是除了启动初始化以外BIOS程序最常用的功能。

BIOS启动流程:

  1. 系统开机 - 上电自检(Power On Self Test 或 POST)。

  2. POST过后初始化用于启动的硬件(磁盘、键盘控制器等)。

  3. BIOS会运行BIOS磁盘启动顺序中第一个磁盘的首440bytes(MBR启动代码区域)内的代码。

  4. 启动引导代码从BIOS获得控制权,然后引导启动下一阶段的代码(如果有的话)(一般是系统的启动引导代码)。

  5. 再次被启动的代码(二阶段代码)(即启动引导)会查阅支持和配置文件。

  6. 根据配置文件中的信息,启动引导程序会将内核和initramfs文件载入系统的RAM中,然后开始启动内核。

BIOS本身是汇编语言代码,是在16位实模式下调用INT 13H中断执行的,由于x86-64是一个高度兼容的指令集,也为了迁就BIOS的16位实模式的运行环境,所以即使现在的CPU都已是64位,如果还是在BIOS启动(基本见于09年以前的主板),在开机时仍然都是在16位实模式下执行的。16位实模式直接能访问的内存只有1MB,就算你安了4G、8G或者16G还是32G内存,到了BIOS上一律只先认前1MB。在这1MB内存中,前640K称为基本内存,后面384K内存留给开机必要硬件和各类BIOS本身使用,了解了这些,下面谈一下BIOS启动计算机的具体过程。

当按下电源开关时,电源就开始向主板和其他设备供电,这时电压还不稳定,在早期的南北桥主板上,由主板北桥向CPU发复位信号,对CPU初始化;稳定电压后复位信号便撤掉。而对于现在的单南桥主板,则由CPU自身调整稳定电压达到初始化的目的,当电压稳定后,CPU便在系统BIOS保留的内存地址处执行跳转BIOS起始处指令,开始执行POST自检。

在POST自检中,BIOS只检查系统的必要核心硬件是否有问题,主要是CPU、640K基本内存、显卡是否正常,PS/2键盘控制器、系统时钟是否有错误等等。由于POST检查在显卡初始化以前,因此在这个阶段如发生错误,是无法在屏幕上显示的,不过主板上还有个报警扬声器,而且如果主板的8255外围可编程接口芯片没有损坏的话,POST报警声音一定是会出来的。可以根据报警声的不同大致判断错误所在,一般情况下,一声短“嘀”声基本代表正常启动,不同的错误则是不同的短“嘀”声和长“嘀”声组合。POST自检结束后,BIOS开始调用中断完成各种硬件初始化工作。

硬件初始化工作中,主要说明两点,首先经过POST检测后,电脑终于出现了开机启动画面,这就是已经检测到了显卡并完成了初始化。但是请注意,由于BIOS是在16位实模式运行,因此该画面是以VGA分辨率(640*480,纵横比4:3)显示的,因为实模式最高支持的就是VGA。以前的小14-17寸CRT显示器由于都是4:3比例,最高分辨率也比较低,因此这个开机启动画面没有什么违和感,但现在的液晶显示器基本上都是宽屏16:9的,分辨率也较高,因此在这样的显示屏下,启动画面上的一切东西显示都可以说“惨不忍睹”——图形被拉长,字体很大很模糊,可以很明显看到显示字体的锯齿。第二,BIOS只识别到由主引导记录(MBR)初始化的硬盘,之所以说明这点,是因为后续的EFI或UEFI采用了一种新的GUID磁盘分区系统(GPT)格式,这种硬盘在BIOS下是无法识别的。硬件全部初始化完毕后,接下来进入更新ESCD阶段。

在ESCD更新阶段中,BIOS将对存储在CMOS中和操作系统交换的硬件配置数据进行检测,如果系统硬件发生变动,则会更新该数据,否则不更新保持原状不变,ESCD检测或更新结束后,BIOS将完成最后一项工作,就是启动操作系统。

最后这一步中,BIOS根据CMOS中用户指定的硬件启动顺序,读取相应设备的启动或引导记录,引导相应设备上的操作系统启动,进入操作系统,此后便由操作系统接替BIOS负责硬件和软件间的相互通信。如果发现所有硬件都没有能引导操作系统的记录,则会在屏幕上显示相应错误信息,并将电脑维持在16位实模式。

虽然BIOS作为电脑加电启动所必不可少的部分,但是从其于1975年诞生之日起近30余年,16位汇编语言代码,1M内存寻址,调用中断一条条执行的理念和方式竟然一点都没有改变,虽然经各大主板商不懈努力,BIOS也有了ACPI、USB设备支持,PnP即插即用支持等新东西,但是这在根本上没有改变BIOS的本质,而英特尔为了迁就这些旧技术,不得不在一代又一代处理器中保留着16位实模式(否则根本无法开机的)。但是,英特尔在2001年开发了全新的安腾处理器,采用IA-64架构,并推出了全新的EFI。后来证明,安腾处理器、IA-64架构没有推广开来,而EFI和后继的UEFI却发扬光大,成为现在电脑的主要预启动环境。

3. 什么是UEFI?

UEFI它其实和BIOS是同一个性质的东西,同一种程序,是随着发展出现的BIOS升级版,被看做是有近20多年历史的BIOS的继任者。全称“统一的可扩展固件接口”,它也是在电脑里微软系统运行之前,但是BOOT出现后加载运行的一个预启动操作环境程序。因为硬件发展迅速,传统式(Legacy)BIOS成为进步的包袱,现在已发展出最新的UEFI(UnifiedExtensibleFirmwareInterface)可扩展固件接口。但造化弄人的是,理论上说是比BIOS更先进的UEFI,却还是诸多支持不足,往往很多是UEFI启动电脑,到头来还是切换回BIOS。

编写的语言:高级程序设计语言C语言

UEFI启动流程:

  1. 系统开机 - 上电自检(Power On Self Test 或 POST)。

  2. UEFI 固件被加载,并由它初始化启动要用的硬件。

  3. 固件读取其引导管理器以确定从何处(比如,从哪个硬盘及分区)加载哪个 UEFI 应用。

  4. 固件按照引导管理器中的启动项目,加载UEFI 应用。

  5. 已启动的 UEFI 应用还可以启动其他应用(对应于 UEFI shell 或 rEFInd 之类的引导管理器的情况)或者启动内核及initramfs(对应于GRUB之类引导器的情况),这取决于 UEFI 应用的配置。

4. BIOS和UEFI有什么区别?

BIOS和UEFI有什么区别,我们这里只说说BIOS电脑和UEFI电脑,在U盘启动使用上的区别。

①.电脑是UEFI模式的可切换回BIOS模式,BIOS模式的变不了UEFI模式。程序功能性上其实意义是同样一种程序,而UEFI本身应该是一种更先进的接口,但是因为电脑硬件更新换代还没那么快,支持不足,很多UEFI电脑还是有支持切换回BIOS的模式选项。

②.进入BIOS和进入UEFI快捷键是一样的,软件界面设置操作也差不多。

③.但是BIOS和UEFI的启动引导支持是不同的,支持BIOS的U盘启动,很多在UEFI下就无法启动,所以往往支持BIOSU盘启动的U盘,在UEFI电脑上就必须切换回BIOS。

④.GHOST系统镜像或者GHOST这个范畴里的各类软件与系统重装工具,在UEFI启动电脑上重装容易出现各类问题,兼容性没传统BIOS的电脑好。

传统的BIOS引导安装的电脑,分区表的格式是MBR的,装机基本是BIOS引导+MBR分区的格式。

而UEFI引导安装的电脑,硬盘分区表是GPT格式的,操作系统安装后它是运行在UEFI引导+GPT分区的格式基础上。从硬盘分区上来说UEFI和BIOS就是两个完全不同的分区表格式了,所以往往用GHOST备份出来的系统,你再重装还原,最好是原BIOS的装在BIOS引导方式的电脑上,原UEFI的装在UEFI的电脑上。不然很容易出问题。

最好的解决方式就是,如果你的电脑是UEFI模式的,你又不想切换成BIOS方式,UEFI模式的电脑最好使用U当家工具来安装微软官方原版原盘的ISO镜像,而不是ghost系统。因为微软官方原版镜像就可以对UEFI和GPT一次性的设置好。但是我要和你说一声,假设你想UEFI,那么你只能装出产年份在win8及以后的win10,这两款64位系统。win8以下的微软系统你就别折腾了,因为win7,xp,2003那些,它们出生的那个年代还没有UEFI呢,都不是原生支持UEFI的。

但是从我个人的建议来说呢,如果你买的电脑原来预装的是UEFI模式下安装的系统,最好还是切换回BIOS模式,然后重新全部格式化硬盘GPT分区转换回MBR,老老实实用BIOS+mbr分区装系统吧。

⑤.UEFI电脑只支持64位系统,而BIOS电脑无法支持挂载单块空间大于2T空间的硬盘。

5. 使用过程中对于BIOS和UEFI的注意事项

①如果是重装系统(就是电脑原先已经装过微软系统),BIOS的就不用多说了没啥纠结的,BIOS的就直接用U当家然后看教程就装了。

②UEFI的就要纠结一下了,如果电脑原先装过系统是UEFI+GPT分区模式的。

③使用U大侠BIOS制作U盘,UEFI的电脑必须切换成BIOS,并且硬盘分区是GPT的要全部转换成MBR,才能GHOST重装。硬盘转换分区原先的资料可能全无。因为你原先是UEFI+GPT分区的电脑,就算你切换为BIOS模式能成功启动U大侠U盘,BIOS模式下是无法识别出原先UEFI模式下的GPT分区的硬盘的。

④如果是新装系统(就是电脑原先没装过微软系统),这种情况也有很多,例如你电脑买回来是没带系统的,厂家不包预装系统只有DOS,或者是苹果电脑原先自带苹果系统,或者是电脑买回来预装的是Linux系统。

这种情况,不论是BIOS还是UEFI,我都不建议你用GHOST镜像新装,问题很多的。最好就是下载微软官方原版原盘的ISO镜像,用U大侠工具(不论BIOS版还是UEFI版都可以)直接一键把微软官方原版镜像写入U盘,然后U盘启动直接走官方原版镜像的安装流程。

因为微软官方原版原盘镜像,虽然是未激活,而且也没驱动,但是对电脑新装引导支持好,可以让你真正电脑重新分区一次,装好各种支持。一般重装才用GHOST,新装最好是原版。

补充

EFI,是Extensible Firmware Interface的词头缩写,直译过来就是可扩展固件接口,它是用模块化、高级语言(主要是C语言)构建的一个小型化系统,它和BIOS一样,主要在启动过程中完成硬件初始化,但它是直接利用加载EFI驱动的方式,识别系统硬件并完成硬件初始化,彻底摒弃读各种中断执行。EFI驱动并不是直接面向CPU的代码,而是由EFI字节码编写成,EFI字节码是专用于EFI的虚拟机器指令,需要在EFI驱动运行环境DXE下解释运行,这样EFI既可以实现通配,又提供了良好的兼容。此外,EFI完全是32位或64位,摒弃16位实模式,在EFI中就可以实现处理器的最大寻址,因此可以在任何内存地址存放任何信息。另外,由于EFI的驱动开发非常简单,基于EFI的驱动模型原则上可以使EFI接触到所有硬件功能,在EFI上实现文件读写,网络浏览都是完全可能的。i,BIOS上的的CMOS设置程序在EFI上是作为一个个EFI程序来执行的,硬件设置是硬件设置程序、而启动管理则是另一个程序,保存CMOS又是另一个程序,虽然它们在形式的Shell上是在一起的。

EFI在功能上完全等同于一个轻量化的OS,但是EFI在制定时就定位到不足以成为专业OS的地位上,首先,它只是一个硬件和操作系统间的一个接口;其次,EFI不提供中断访问机制,EFI必须用轮询的方式检查并解释硬件,较OS下的驱动执行效率较低,最后,EFI只有简单的存储器管理机制,在段保护模式下只将存储器分段,所有程序都可以存取任何一段位置,不提供真实的保护服务。伴随着EFI,一种全新的GUID磁盘分区系统(GPT)被引入支持,传统MBR磁盘只能存在4个主分区,只有在创建主分区不足4个时,可以建立一个扩展分区,再在其上建立被系统识别的逻辑分区,逻辑分区也是有数量的,太多的逻辑分区会严重影响系统启动,MBR硬盘分区最大仅支持2T容量,对于现在的大容量硬盘来说也是浪费。GPT支持任意多的分区,每个分区大小原则上是无限制的,但实际上受到OS的规定限制不能做到无限,不过比MBR的2T限制是非常重要的进步。GPT的分区类型由GUID表唯一指定,基本不可能出现重复,其中的EFI系统分区可以被EFI存取,用来存取部分驱动和应用程序,虽然这原则上会使EFI系统分区变得不安全,但是一般这里放置的都是些“边缘”数据,即使其被破坏,一般也不会造成严重后果,而且也能够简单的恢复回来。

当EFI发展到1.1的时候,英特尔决定把EFI公之于众,于是后续的2.0吸引了众多公司加入,EFI也不再属于英特尔,而是属于了Unified EFI Form的国际组织,EFI在2.0后也遂改称为UEFI,UEFI,其中的EFI和原来是一个意思,U则是Unified(一元化、统一)的缩写,所以UEFI的意思就是“统一的可扩展固件接口”,与前身EFI相比,UEFI主要有以下改进:

首先,UEFI具有完整的图形驱动功能,之前的EFI虽然原则上加入了图形驱动,但为了保证EFI和BIOS的良好过渡,EFI多数还是一种类DOS界面(仍然是640*480VGA分辨率),只支持PS/2键盘操作(极少数支持鼠标操作),不支持USB键盘和鼠标。到了UEFI,则是拥有了完整的图形驱动,无论是PS/2还是USB键盘和鼠标,UEFI一律是支持的,而且UEFI在显卡也支持GOP VBIOS的时候,显示的设置界面是显卡高分辨率按640*480或1024*768显示,因此画面虽小但很清楚,但是这样会导致屏幕周围大片留黑,不过鱼和熊掌不可兼得,除非UEFI默认窗口大小也是最高分辨率

其次,UEFI具有一个独特的功能,安全启动,而EFI是没有安全启动的,安全启动(Secure Boot),实际上通俗的解释是叫做固件验证。开启UEFI的安全启动后,主板会根据TPM芯片(或者CPU内置的TPM)记录的硬件签名对各硬件判断,只有符合认证的硬件驱动才会被加载,而Win8以后的Windows则是在操作系统加载的过程中对硬件驱动继续查签名,符合Windows记录的硬件才能被Windows加载,这在一定程度上降低了启动型程序在操作系统启动前被预加载造成的风险,但是这也会造成系统安装变得垄断

无论EFI还是UEFI,都必须要有预加载环境、驱动执行环境、驱动程序等必要部分组成,为了支持部分旧设备(如在UEFI下挂载传统MBR硬盘,不支持UEFI启动的显卡在UEFI下仍然支持运行等),还需要一个CSM兼容性支持模块、EFI或UEFI都是仅支持GPT磁盘引导系统的,下面就具体谈一下EFI或UEFI启动计算机的过程。

一般地,预加载环境和驱动执行环境是存储在UEFI(UEFI BIOS)芯片中的,当打开电源开关时,电脑的主要部件都开始有了供电,与BIOS不同的是,UEFI预加载环境首先开始执行,负责CPU和内存(是全部容量)的初始化工作,这里如出现重要问题,电脑即使有报警喇叭也不会响,因为UEFI没有去驱动8255发声,不过预加载环境只检查CPU和内存,如果这两个主要硬件出问题,屏幕没显示可以立即确定,另外一些主板会有提供LED提示,可根据CPU或内存亮灯大致判断故障。

CPU和内存初始化成功后,驱动执行环境(DXE)载入,当DXE载入后,UEFI就具有了枚举并加载UEFI驱动程序的能力,在此阶段,UEFI会枚举搜索各个硬件的UEFI驱动并相继加载,完成硬件初始化工作,这相比BIOS的读中断加载速度会快的多,同样如加载显卡的UEFI驱动成功,电脑也会出现启动画面,硬件驱动全部加载完毕后,最后同BIOS一样,也得去启动操作系统。

在启动操作系统的阶段,同样是根据启动记录的启动顺序,转到相应设备(仅限GPT设备,如果启动传统MBR设备,则需要打开CSM支持)的引导记录,引导操作系统并进入,这里需要注意的是,UEFI在检测到无任何操作系统启动设备时,会直接进入UEFI设置页面,而不是像BIOS那样黑屏显示相关信息。

综上对BIOS和UEFI启动计算机过程的叙述,可以概括为:BIOS先要对CPU初始化,然后跳转到BIOS启动处进行POST自检,此过程如有严重错误,则电脑会用不同的报警声音提醒,接下来采用读中断的方式加载各种硬件,完成硬件初始化后进入操作系统启动过程;而UEFI则是运行预加载环境先直接初始化CPU和内存,CPU和内存若有问题则直接黑屏,其后启动PXE采用枚举方式搜索各种硬件并加载驱动,完成硬件初始化,之后同样进入操作系统启动过程。

此外,BIOS是16位汇编语言程序,只能运行在16位实模式,可访问的内存只有1MB,而UEFI是32位或64位高级语言程序(C语言程序),突破实模式限制,可以达到要求的最大寻址。

启动方式和硬盘分区方式的组合

MBR分区

MBR的意思是“主引导记录”,是IBM公司早年间提出的。它是存在于磁盘驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统系统信息,并用一小段代码来启动系统。如果你安装了Windows,其启动信息就放在这一段代码中——如果MBR的信息损坏或误删就不能正常启动Windows,这时候你就需要找一个引导修复软件工具来修复它就可以了。Linux系统中MBR通常会是GRUB加载器。MBR。当一台电脑启动时,它会先启动主板自带的bios系统,bios加载MBR,MBR再启动Windows,这就是mbr的启动过程。

GPT分区

GPT的意思是GUID Partition Table,即“全局唯一标识磁盘分区表”。他是另外一种更加先进新颖的磁盘组织方式,一种使用UEFI启动的磁盘组织方式。最开始是为了更好的兼容性,后来因为其更大的支持内存(mbr分区最多支持2T的磁盘),更多的兼容而被广泛使用,特别是苹果的MAC系统全部使用gpt分区。gtp不在有分区的概念,所有CDEF盘都在一段信息中存储。可以简单的理解为更先进但是使用不够广泛的技术。因为兼容问题,gpt其实在引导的最开始部分也有一段mbr引导,也叫做“保护引导”,为了防止设备不支持uefi 区别。

内存支持:mbr最多支持2T,而gpt理论上是无限制的。

分区:mbr最多支持四个主分区,gpt没有限制。如果你想跑多系统,mbr最多4个而gpt没有限制。

系统:win7只能用mbr分区(也可以但是很麻烦,不建议),从Win8开始微软建议你使用gpt。

其它:gpt是由uefi启动的,而uefi是后来才提出的概念,兼容性和稳定性不如bios+mbr。

实际选择

如果你的硬盘超过2T,那么你必须选择GPT+UEFI,2t以下就无所谓了;

如果你对电脑不太懂,那么我建议你使用MBR,因为大多数电脑默认都是MBR bios启动,如果你选择了gpt那么你必须在bios下设置启动项,对于一个新人来说比较复杂,每家电脑的主板还有不同无疑增加了难度。

如果你比较精通,建议gpt。毕竟gpt代表了未来,可以预见早晚uefi会会替代掉bios。

从系统多方面来说,win7用户建议mbr简单易操作,8和10的用户还是花点力气学习一下gpt吧毕竟是一种趋势。苹果用户就不用说了,gpt没得选。

方案:Legacy BIOS + MBR(Win 7推荐),UEFI + GPT(Win 10推荐)。一般现在的主板都是支持这两种方式启动的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多