本帖最后由 火日攻天 于 2013-3-13 15:01 编辑
注意事项
Ø 本文所说的机型为GT60 Ø 16F3准系统理论上也可以同样操作 Ø GT70请下载GT70对应的BIOS Ø 刷BIOS有风险,如出意外作者不负责,切记谨慎 Ø 硬盘需要由MBR转化为GPT,整个硬盘的数据需要备份,如果有两块硬盘只需备份主硬盘 Ø 只支持64位系统,目前仅试验win8,win7理论上是可以的,不过请自行尝试。 Ø 目前测试后已经无任何bug,唯一的缺点是bios无法刷回win7的bios,以后升级只能刷win8的bios,而win8的bios目前无解锁版本,所以希望通过bios超频的同学一定要谨慎。
预备知识 (以下内容来自互联网)
UEFI 可扩展固件接口(ExtensibleFirmware Interface,EFI)是 Intel 为全新类型的 PC 固件的体系结构、接口和服务提出的建议标准。其UEFI中图形化的硬件设置界面主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是有近20多年历史的PC BIOS的继任者。 由于电脑教育普及,很多人都知道BIOS就是Basic Input/Output System,翻成中文是“基本输入/输出系统”,是一种所谓的“固件”,负责在开机时做硬件启动和检测等工作,并且担任操作系统控制硬件时的中介角色。 然而,那些都是过去DOS 时代的事情,自从Windows NT出现,Linux 开始崭露头角后,这些操作系统已将过去需要通过BIOS完成的硬件控制程序放在操作系统中完成,不再需要调用BIOS功能。一般来说,当今所谓的“电脑高手”,多半是利用BIOS来对硬件性能做些超频调校,除了专业人士外,鲜有人再利用 BIOS 进行底层工作。 因为硬件发展迅速,传统式(Legacy)BIOS 成为进步的包袱,现在已发展出最新的EFI(Extensible FirmwareInterface)可扩展固件接口,以现在传统 BIOS 的观点来说,未来将是一个“没有特定 BIOS”的电脑时代。 UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFIForm的国际组织,贡献者有Intel,Microsoft,AMI,等几个大厂,属于open source,目前版本为2.1。与legacy BIOS 相比,最大的几个区别在于: 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将是近3年的趋势,到时候对于PC的利用以及维护都将步入一个新的时代。
传统 BIOS 开机流程 从你按下主机机壳上的电源键,到进入作业系统的期间,储存于主机板上那颗 EEPROM(电气可抹除暨可程式化唯读记忆体)里的 BIOS 便会开始执行以下的工作: 1. 初始化:当电脑打开,CPU 会自行重置为初始状态,準备运作。BIOS boot block(基本 输出输入系统开机区块)初始化阶段启动,因为此时系统记忆体中是空的,没有内容可以执行,所以厂商让 CPU 去寻找系统 BIOS ROM 中的 reset vector(重置 向量):用一个固定的位置来启动所谓的 BIOS boot program 开机程式。 一般来说程式会在记忆体的 FFFF0h 位址,也就是在 UMA(上层记忆区域)靠结 尾的地方。为避免 ROM 大小改变造成相容性的问题,所以一般会选择放这里。它 的内容只有一个 jump 指令,进一步跳到真正的 BIOS 启动程序。当然了,各家 IBV (independent BIOS vender;独立 BIOS 供应商)可以把程式放在不同的位置,只要透过 jump 来指定就可以了。在这段期间,系统的 CPU、晶片组、Super I/O 和 USB 只有部分初始化,仅获取足够资料来应付万一 BIOS 开机失败,可以利用软碟(由 Super I/O 控管)甚至 是光碟(由晶片组的IDE/SATA)等储存媒体来救援 BIOS 的 boot block。 2. POST(Power On Self Test;开机自我检测):然后 BIOS 开始施行 Power-On Self Test(POST;开机自我检测),在过程中检 查电脑各项组件及其设定, 像是: 中央处理器、 主记忆体、 键盘、 滑鼠等等状态。 接着便寻找被内建在 BIOS 内部的显示卡程序并执行。 它通常被放在记忆体C0000h 的位置,作用是显示卡的初始化,而大部分的显示 卡都会在显示器上显示其相关讯息。这就是为何各位在开机的时候,首先会在显 示器的画面左上角出现有关显示卡讯息的原因。再下来就是让 BIOS 寻找其他装置的 ROM(唯读记忆体),看看这些设备中哪些 还有个别的 BIOS。如果这时有找到任何其它装置的 BIOS,它们也会被执行。 下一步 BIOS 会显示启动画面,并开始更深入的检测,包含我们平常可以在萤幕 上看到的记忆体容量检测。 如果这时候遇到任何错误,就会在画面上显示错误讯 息。 3. 记录电脑系统的设定值:到这里还没有结束,再来 BIOS 会根据自己的“系统资源表”,来对系统进行进 一步的确认, 看看你的电脑究竟安装了那些系统资源或设备。有些电脑会逐步显示这些被侦测到的设备。例如 BIOS 支援随插即用,那它将会侦测和配置随插即 用装置,并显示由 BIOS侦测到的随插即用设备。 在这些检测结束后,BIOS会打出一个侦测总结表于画面上。而这个总结表在部 分 IBV 的设定中是可以让使用者开启或关闭的。 当然也有些 IBV 为加速开机把这 一步直接隐藏省略。Tips:BIOS boot block 在快闪唯读记忆体内, 通常会分成两个区块, 一个区块存放一般的BIOS 程式码, 即所谓的 codeblock(程式码区块);另一个区块则是存放用来开机(或急救) 的程式码,就是所谓的 boot block(开机区块)。当电源打开时,主机板会先 从 boot block 执行,它会立即检查 code block 的程式码是否正确,如果正确, 就会转到 codeblock 继续执行下去。而所谓的 BIOSrecovery(BIOS 回复)就 是利用 bootblock 回写动作来进行 BIOS 更新失败时的救援。 4. 提供常驻程式:提供作业系统或应用程式呼叫的中断向量,如INT 10h(VGA 图形及文字输出中 断)等。 5. 载入作业系统:到这里是系统检测的部分,接下来 BIOS 便开始寻找开机装置,使用者可以透过 在 BIOS 的设定来决定搜寻顺序,目前常见的开机设备至少包含 FDD、HDD 以及光 碟机和 USB 开机装置等多项。 找到开机装置后,BIOS 将会搜寻开机讯息以进行作业系统的开机过程。如果是 找到了一个灌好 OS 的硬碟,它将会寻找位在硬碟第 0 面,第 0 轨,第 1 磁区里 的 Master Boot Record(主要开机磁区)。如果它找到的是 FDD,也会读取软碟 的第 1 磁区。 再把读取到的资料放在记忆体7C00h 的位置, 跳到那里并且执行它。 自此才开始进入 OS 启动阶段。
UEFI BIOS 系统的开机流程 同样是进行电脑系统的开机,由于 UEFIBIOS 是遵循 UEFI 论坛的规范定义下开 发的,所以 UEFI 的开机流程会像下图一般: 1. SEC 阶段:SEC(安全性)阶段其主要的特色为“cache as RAM”,即处理器的快取当成记 忆体。由于 C 语言需要使用堆叠,在这个阶段的系统记忆体尚未被初始化,在没有记忆体可用的情况下, 便把处理器的快取当成记忆体来使用,在主记忆体被初 始化之前来进行预先验证 CPU/晶片组及主机板。 因为这时侯没有快取, 会导致处理器的效能变得较差,所以在记忆体初始化完毕 之前,SEC 和 PEI 阶段的程式码越简短,越能减少这个副作用。 2. PEI 阶段:和传统 BIOS 的初始化阶段类似,PEI(EFI 前初始化)阶段是用以唤醒 CPU 及记 忆体初始化。这时候只起始了一小部分的记忆体。同时,晶片组和主机板也开始 初始化。接下来的服务程式会确定 CPU 晶片组被正确的初始化,在此时,EFI 驱 动程式派送器将载入 EFI 驱动程式记忆体, 进入了起始所有记忆体的DXE 阶段 (驱 动程式执行环境)。 3. DXE 阶段:DXE 的主要功能在于沟通 EFI驱动程式及硬体。也就是说此阶段所有的记忆体、 CPU(在此是指实体两个或以上的非核心数目,也就是双 CPU 插槽处理器甚至是 四 CPU 插槽处理器)、PCI、USB、SATA 和 Shell 都会被初始化。 4. BDS 阶段:在 BDS(开机设备选择)这个阶段,使用者就可以自开机管理者程式页面,选择 要从哪个侦测到的开机设备来启动。 5. TSL 阶段:然后进入 TSL(短暂系统载入)阶段,由作业系统接手开机。除此之外,也可以 在 BDS 阶段选择 UEFI Shell, 让系统进入简单的命令列,进行基本诊断和维护。
传统 BIOS 哪里不好? 在继续探讨何谓 UEFI BIOS 之前,先来看看传统 BIOS 有哪些问题,让 Intel 决心带头推出 UEFI BIOS。 1. 过时的 16 位元模式在 x86 系列 CPU 进入 32 位元的时代,为了相容性考量,当时最新的80386 CPU 保留了 16 位元的执行方式,即真实模式(real mode)。在后来多次的 CPU 改朝 换代中都保留了这种执行方式,甚至在含有EM64T 的 Xeon 系列 CPU 中,供电到 CPU 启动时仍然会切换到 16 位元的真实模式下执行。 也就是说,虽然各大BIOS 厂商为了配合潮流演进,将许多新功能新元素添加到 产品中,但 BIOS 在本质上没有任何改变。迫使 Intel 在开发更新的 CPU 时,都 必须加进会使效能大大降低的相容模式。 2. 只有 1MB 定址空间各位读者如果有注意传统 BIOS 开机,在 POST 完毕后萤幕上打出的系统摘要表,会发现记忆体栏位标示着“Base Memory=640KB”。加上前一篇提到的 384KB UMA (这里的记忆体不会列入 Base Memory),就是所谓 1MB 可定址记忆体空间。会造成这项限制,主要还是真实模式的副作用。16 位元的 CPU,其定址能力为 20 条定址线所能处理的 2^20 位元组(Bytes),也就是 1024 千位元组(KB)。 换句话说,在进入 OS 之前的开机阶段,即使安装了高达 4GB 的记忆体,绝大部 分都无法使用。 3. 组合语言难维护假设某天你买了一张高阶工作站主机板,再装上一张 SCSI 或 SAS 的磁碟阵列卡,竟然发现安装后你的主机板开机开不下去,然后显示“Not enough space to copy PCI option ROM”或“Option ROM memory space exhausted”警告字串。然后 本来你那雀跃快乐的心情消失了,取而代之的是“归 LP 火”熊熊燃烧着。 当你打电话给阵列卡商,电话那头的死公务员声音说着:“你要不要问问主机板 厂有没有新的 BIOS?”。 好不容易找上主机板厂商客服问:“你们有没有办法解决?”然后,你和主机板 BIOS 工程师之间的攻防就此展开。 对板卡厂的 BIOS 工程师而言, 除非刚好有下单下很大的客户遇到类似相关问题, 否则很有可能就是不了了之。 你只好趁购买七天内退掉那张阵列卡,不然就是再 找一张可以正常搭配的主机板。 由于传统 BIOS 是用组合语言编写的,而软体界早就已经是 C/C++高阶语言甚至 是.NET 满天飞,为了相对难找的人才(组合语言高手相对少,要 BIOS 真正写得 好的更是少数)来减缓新产品上市的速度,不管是消费者或厂商都无法接受。此时 UEFI BIOS 标準化和模组化的特征, 便可加速产品推出和减少debug 的时间。 另外 C 语言写的 UEFI BIOS 体积也会变大, 连带使储存 BIOS 的 EEPROM 需要扩增。 别忘了,这也是 Intel 的势力范围,如果 EFI BIOS 推广成功,板卡厂就得多采 购一颗晶片。 ▲ 由于传统 BIOS 的先天局限,有时候磁碟阵列卡就是装不上去。 4. 十年不变的程式码上述三大问题是以开发厂商的角度来观察。其他隐而不现的部分,则包含了功能的局限性和对使用者不够友善的操作介面。对照现今的视窗介面作业系统,传统 BIOS 以文字介面为主且充满着火星文,加上除了单纯的开机,作为仲介硬体初 始化和作业系统的功能外实在阳春的可怜。在开发 Itanium CPU 之际, 业界大魔王 Intel 实在不想再受制于这些顾虑。 试想, 既然这是一个新生的 CPU 架构, 那系统韧体和作业系统之间的介面就顺便一起重 新定义。 并且这一次,Intel 为了让以后各种新的规格和技术可以快速导入,严格定义这 个传统 BIOS 接班人必须具有扩展弹性,而且采取标準化的韧体介面规范,以避 免发生传统 BIOS 的 IBV 程式码更新太被动的问题。 笔者不是开玩笑,业界之前盛传一句话,如果 Award BIOS 当时(IntelPentium 处理器时代)没有华硕,那肯定没有后来功能齐全的 BIOS 程式编码。传统 BIOS 静态连结,缺乏远见且叠床架屋,而几乎全基于经验和约定的见招拆招。所以才 有 2000 年开发出来所谓的 EFI(Extensible Firmware Interface;可扩展韧体 介面)技术作为工业标準规格,定义了一个驱动介面,用以沟通硬体/韧体和作业系统。
UEFI 的版本发展 最初制定的 EFI 版本 2000 年 12 月的 1.02 版。在2002年的12月又释出了加入 EFI 驱动程式模型的 1.10 版。 2005 年, 于 Intel 将此规格提供给负责 UEFI 开发 和推广的 UEFI 论坛。为了反映这点,EFI也被更名为 UEFI。在大部分的文件资料中,EFI 和 UEFI 讲的是一样的东西。UEFI 论坛在 2007 年 1 月释出 2.1 版的规范。 目前最新公开的版本就是2009 年 5 月发佈的 2.3 版。概括而论,凡依照 UEFI 论坛规范,使用 C 语言写作的 BIOS 即为 UEFI BIOS。 UEFI 论坛成员类别 IBV(独立 BIOS 厂商) AMI、Insyde、Phoenix IHV(独立硬体厂商) ISV(独立软体厂商) AMD、Apple、Dell、HP、 IBM、Intel、联想 微软UEFI BIOS 哪里好?UEFI 是藉由 UEFI 论坛制定的严谨规范来达成标準化,并用模组化之 C 语言方式 的参数堆叠传递, 藉由动态连结形式所建构出来的系统,相较于使用组合语言的 传统 BIOS 更易于实作,在容错和错误更正的表现上更加优良,更好开发。UEFI 是以 32 或 64 位元 CPU 保护模式执行(也称为 Flat Mode),突破传统 16 位元 代码的定址能力,可达到 CPU 的最大定址空间。 1. 定址空间更弹性UEFI BIOS 利用载入 EFI driver 的形式,来进行硬体的辨识/控制及系统资源 掌控。 传统 BIOS 是以真实模式中断向量的方式增加硬体功能。它要将一段类似于驱动 程式的 16 位元代码,放置在记忆体0x000C0000 至 0x000DFFFF 之间。这段记忆 体空间有限(128KB),因此,当必须放置的 option ROM 超过 128KB 时,传统 BIOS 便无能为力。 很多时候传统 BIOS 的工程师为了解决这类问题, 像刚刚提到的介面卡 BIOS 容量 过大, 便要想办法利用可能的排列组合硬挤出空间来放驱动代码。而重组过程有时不小心造成一些副作用,例如才刚解决的 bug,重组后又再发生!也就是说, UEFI BIOS 可以更有系统的分配储存空间,避免使用强制定址。 2. 什么系统都能用另外, 传统 BIOS 的硬体服务程式都是以 16 位元代码的形式存在,在增强模式下 执行的作业系统想存取这些服务会有困难。因此 BIOS 提供的服务在现实中只能 提供给 MS-DOS 之类的系统用。 相对的, UEFI 系统下的驱动并不是可以直接在 CPU 执行的代码, 而是用 EBC (EFI Byte Code)这种专用于 EFI driver的虚拟机器指令,该指令必须在 UEFI 的 DXE 阶段被解压缩后翻译执行。如此便有更佳的向下相容性,因为 EFI driver 是弹性的驱动程式模组架构,可 不断的扩充驱动程式及介面, 不用重新编写,所以就无需考虑因系统升级所衍生 的相容性因素。 3. 开发维护更容易加上 EFI driver 开发简单,所有的 PC 零组件厂商都可以参与,就像现代作业系统的开发模式,这样的模式曾使 Windows 系统短短几年就变得无比强大。有了 EFI driver,也可以让显示卡在开机阶段就载入某种程度的功能,进而可以把传 统文字介面为主的 BIOS 转成图形介面。 4. 精简系统用途大最后还有 EFI Shell, 这是个精简的作业系统,可以让使用者进行BIOS 的更新、 系统诊断、安装特定软体。有了 UEFI BIOS 甚至可以播放 CD 和 DVD 而不需完全 载入 OS,EFI driver 可以被载入或卸载,连 TCP/IP 核心程式都可以使用。基于 EFI 的 driver model 可使 UEFI 系统接触到所有的硬体功能,在进入作业系统之前浏览网站不再是天方夜谭,甚至实作起来也非常简单。总之,对使用者而言, 多了一个方便的环境以及华丽的图形介面,是最明显的好处。传统 BIOS vs. UEFI BIOS 重点差异 BIOS 种类 程式语言 资源控制 处理器运行环境 扩充方式 第三方 IHV 和 ISV 支援性 图形化能力 传统 BIOS 组合语言 UEFI BIOS C 语言中断向量 写死的记忆体存取 驱动程式/协定 写死的输出/输入存取X86 16 位元 接合中断向量 较差 较差 CPU 保护模式 载入驱动程式 较佳且可以支援多平台 较佳有内建简化的作业系统前环境 无
有谁在用 UEFI? UEFI 支援必须藉由软硬体的相互合作来达成,我们来看看目前市面上流通的产品中,哪些已经采用了 UEFI。
支援 UEFI 的硬体 1. 2006 年,苹果电脑推出第一台使用 Intel 处理器架构的麦金塔电脑。从此开 始用 EFI/UEFI framework,而非以往搭载 IBM PowerPC 处理器的麦金塔电脑用 的、发源于 SunMicrosystems(昇阳电脑公司)的 OpenFirmware。 ▲ 目前新版的 Mac OSX 都已经支援 UEFI。 2. Intel 自家的行动型、桌上型和伺服器电脑主机板自 2006 年起开始全面转换 为 EFI/UEFI BIOS。例如从 945 系列晶片组开始,Intel 的主机板就已经使用了 该 framework。 3. 此外,2008 年开始,许多 64 位元电脑系统也正式支援 EFI/UEFI BIOS。如 IBM 的 x3450 伺服器、微星科技具备 ClickBIOS 的主机板(包括下一篇介绍的EFINITY 主机板)、HP 笔记型电脑 EliteBook 系列和平板电脑、HP Compaq 笔记 型电脑较新的机种。 ▲ 微软到了 WindowsServer 2008 才开始支援 UEFI。
支援 UEFI 的作业系统 1. 早在 2000 年, Linux 作业系统便可以支援 EFI, 当时是 eliloEFIboot loader (开机载体),演化至今是 EFI 版本的 grub。 2. 苹果电脑到了 Mac OS X 10.4(代号 Tiger)的 Intel 版便可以支援 EFI。 3. 2002 年微软给 Itanium CPU 使用的 Windows2000 Advanced Server Limited Edition 及 DatacenterServer Limited Edition 版支援了 EFIv1.10 规范。后来的 WindowsServer 2003 for IA-64 版和 Windows XP64-bit 版本也支援 EFI。 至于 UEFI 的支援是从 Windows Server 2008 和 Vista SP1 的 64 位元版本开始, 包括 Windows 7 也只有 64 位元版完整支援 UEFI。 ▲ Intel 自家的 D945PSN 主机板。
|