uefi与win8 (根据网络资料整理)

2024-05-21 06:36:43

BIOS 所有电脑启动的时候,都会运行BIOS程序,用于初始化硬件。BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

BIOS的基本功能,那就是:1)检测硬件,又叫POST

检查硬件是否还正常的工作,但是从软件的角度看.其中最重要的就是对内存的检测的2)初始化硬件,设置其基本状态,使得整个计算机达到所谓的"可用状态"(Ready State).硬件的设计厂家往往为了通用市场的考虑,不愿意将硬件设计成定制的状态,可能一个网卡,可以安装在PC,同样也可以安装在嵌入式系统上.所以为了使得硬件能够按照PC的架构工作,BIOS必须要按照由IHVIndenpendent Hardware Vendor独立硬件商)提供的手册将硬件设置好,比如写几个必须的寄存器之类的,做一些enable的工作.这点非常重要,如果一个硬件没有enable,那么在OS下将不可见.

3)启动OS Loader加载操作系统这也是BIOS必须要做的事情之一.启动的方式是由BIOS规定,操作系统必须按照BIOS的要求来设计.这也是为什么操作系统从DOS一直到Vista,都只能把自己的loader放在MBR,因为BIOS只读MBR.强大的微软都必须要按照这个不成标准的标准来.当然,在EFI时代,这一点有所改变,EFI支持的Boot From File不在需要MBR

4)在操作系统启动起来以后,一部分继续驻留内存,向操作系统以及其他软件提供基本的系统级的服务.如磁盘读写等.例如INT 10基本屏幕服务,INT 13磁盘服务,病毒正是靠INT 13来传播.还有试图绕过INT 10来直接写屏,Windows时代,这些东西事实上仍然存在,并且继续发挥着基本的核心作用,只是他们被Windows包装起来了,一般的程序无法接触到,但这并不能说明他们就没有用处了

5)修复硬件缺陷

Intel在它的CPU里专门留了个模式叫System Managment Mode,拥有最高的权限.SMM中断的时候,就连号称无所不能的Windows的也不知道,这样就可以给CPUbug了,举个例子,比如某天Intel的一个CPUADD指令给出错误操作结果,那么就可以利用SMM在每次执行这个指令的时候,中断一下,由BIOS软件给出正确的执行结果.这就达到了给硬件修复缺陷的目的.这样Intel也不用招回它的CPU了,此外,每次BIOS开机的时候,事实上都会更新CPU Microcode,同样是用来给CPUbug的.所以很多时候,刷BIOS刷出问题,事实上某个CPUbug没有补上导致出了问题出现.

BIOS有三种状态,分别是:1)  Before Build
BIOS
表现为BIOS开发者硬盘上的一堆源代码2)  BIOS Image
BIOS
则是沉睡在Flash里的一段p_w_picpath(主板ROM中的代码)3)  BIOS Runtime

BIOS执行,控制系统,与操作系统交互

EFI BIOS

eFI不是一个具体的软件,而是在操作系统与平台固件(platform firmware)之间的一套完整的接口规范。EFI定义了许多重要的数据结构以及系统服务,如果完全实现了这些数据结构与系统服务,也就相当于实现了一个真正的BIOS核心。

EFI最早是在Spring 2000 IDFIntel Developer’s Forum)上提出的,当时Intel认为,随着IBM80年代初推出了第一台个人计算机开始,直到今天为止,个人计算机硬件平台已经发生了翻天覆地的变化,相关的系统软件如操作系统等也从最早的MS DOS1.0到今天的Windows XP,而作为整个系统的最底层也最为关键的系统软件之一的BIOS却基本上保持了架构二十年不变。这在整个软件史上都是一件不可思议的事情。如今,BIOS已经变成了严重阻碍IT产业前进的绊脚石,必须通过对BIOS的革新来为下一代的操作系统(如Windows Server Longhorn)提供更加强大的支持。

通俗的说:EFI就是用来替换传统BIOS.作为更好的BIOSEFI可以提供过去无法在BIOS中作到的许多事情

BIOS一般有多大?传统bios(以后说legacy bios)一般都是512KB,而早期的EFI bios也是512KB.现在EFI基本上是1MB.

BIOS用什么工具开发?legacy bios一般用MASM 6.11开发,同时还会配上一些厂商自己写的buid tools. EFI则使用Viusal Studio.NET 2003以及MASM 6.11开发

EFI boot是怎么一回事?EFI有自己独特的boot方式,完全抛弃掉了传统的0磁道0扇区的MBR概念.EFIboot方式与文件系统息息相关.过去的legacy bios由于不带文件系统,不得已选择从硬盘上特定空间装载程序的办法,EFI则附带了完整的文件系统支持,所以不再对硬盘有特定的要求,EFI下的操作系统加载程序事实上存储在boot\ia32\bootia32.efi文件里.(假定是IA32架构).这是一个EFI应用程序.

bios的资源汇总:1. BIOS Boot Specification业内一般叫BBS,详细描述bios启动时必须要做的所有事情,如何区分启动设备,如何选择启动设备等等.

2. UEFI SpecificationUEFI规范,详细描述了UEFI bios必须支持的接口.以及UEFI bios的模型,提供的服务等等.开发UEFI必备的.

3. Ralf Brown's Interrupt List收集中断的东西,legacy bios学习很有用.

4. El Torito CD-ROM Boot描述了bios如何从光驱上boot的细节.

5. USB SpecificationUSB设备规范

6. Plug-and-Play SpecificationsMSPnP规范

7. BIOS Writer's Guidebios开发的圣经,cpu厂商给出.Intel的绝对看不到,Intel的是绝密级的文档.AMD的倒是可以看到,不同的cpu有不同的BWG

EFI如何支持传统操作系统如Windows XP?:EFI通过一个叫CSM的东西来支持.CSMCompatibility Support Module,包括CSM32CSM16,EFI里面定义的一种用来对传统技术,MBR,legacy PCI OpRom等支持的模块.包含32位代码和16位的代码,通过一种叫ThunkReverse Thunk的技术来切换CPU执行模式.目前世界上有能力提供CSM的公司只有三家,分别是:Insyde,AMI以及我国南京的百敖软件(Nanjing Byosoft)。CSMefi bios最核心的模块之一。

原生支持EFI的操作系统出现了吗?当然,Linux内核再2.4.0以上,就可以再编译的内核的时候选择EFI支持。Windows Vista也再SP1的时候提供了对EFI的支持,同时Windows Server 2008将直接支持EFI

有能力提供EFI bios的厂家都有哪些?

1. Phoenix --早先主推CSS,现在开始逐渐转行EFI。不过它的动作最慢,已经不为业界看好。2. Insyde --主推H2O。最早的EFI解决方案,也同时卖legacy bios,但是质量一般。3. AMI -- EFI的方案叫Aption,特色是自己的开发工具VEB4. Byosoft --刚成立一年半的一家IBV,拿到了Intel的授权。目前如长城等OEM的一些特殊机器上的bios开始由Byosoft提供。(国产)5. General Software --专做x86 embedded bios的公司。国内很少见。

EFI下附带完整的FAT/FAT32文件系统支持,并且所有的源代码都是open source的,你可以从:https://fat-driver.tianocore.org/上面获取这个EFI下的FAT32驱动程序的代码

启动操作系统的细节问题。legacy BIOS下,系统固件是从默认的0磁道0扇区(俗称的MBR)来加载OSloader程序的。但是EFI提供了另一个选择,如那就是如果操作系统是EFI native的,那么操作系统可以选择将自己的loader程序做成EFI应用程序,然后按照UEFI规范,存放在硬盘的GPT分区内的ef\boot\目录下。具体的文件名是boot(ARCH).efi,这里ARCH是架构名,如果是IA32,则是bootia32.efi,当然也可以是bootx64.efibootIA64.efi等等。BIOS检测到这个文件,会自动将其加载到内存,然后执行。换言之,开始启动操作系统。这就是UEFI BOOT

EFI相较于legacy BIOS,有优点也有缺点优点是高度模组化,移植很方便,OEM开发module很方便。缺点也正是因为这个模组化,完全没考虑到BIOS是直接操作hardwareEFI很不好debug

1998年,Intel牵头,联合AMDAMIAppleDellHPIBMLenovoMicrosoftPhoenix等业界主要厂商,开始制定新一代BIOS。这个项目叫做"统一的可扩展固定接口"Unified Extensible Firmware Interface),简称UEFI2005年推出1.1版,目前是2.3版。新型UEFI,全称统一的可扩展固件接口”(Unified Extensible Firmware Interface)是一种详细描述全新类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上,从而使开机程序化繁为简,节省时间。从20129月以来,电脑运行的已经不是BIOS,而是UEFI BIOS。等它运行结束,再载入操作系统。

微软的态度UEFI是一个很先进的、面向未来的规格。但是很长时间内无法推广,原因就是微软公司不积极。Windows操作系统是桌面市场的主流系统,如果它不推广UEFI,就没有硬件厂商会跟进。所以,普通消费者对这个新规格所知甚少。意想不到的变化,出现在20119月,微软毫无预兆地突然宣布,Windows 8将启用UEFI。这本来是一件好事。但是,问题是微软感兴趣的不是整个UEFI,而是UEFI的一个子规格Secure Boot。它要强行部署Secure Boot

Secure BootSecure Boot只是UEFI的一个部分。两者的关系是局部与整体的关系。Secure Boot的目的,是防止恶意软件侵入。它的做法就是采用密钥。UEFI规定,主板出厂的时候,可以内置一些可靠的公钥。然后,任何想要在这块主板上加载的操作系统或者硬件驱动程序,都必须通过这些公钥的认证。也就是说,这些软件必须用对应的私钥签署过,否则主板拒绝加载。由于恶意软件不可能通过认证,因此就没有办法感染Boot。这个设想是好的。但是,UEFI没规定哪些公钥是可靠的,也没规定谁负责颁发这些公钥,都留给硬件厂商自己决定。现在,微软就是要求,主板厂商内置Windows 8的公钥

Windows 8 首先明确,在不打开Secure Boot的情况下,Windows 8可以安装。这与安装以前版本的Windows没有差别。但是,微软规定,所有预装Windows 8的厂商(即OEM厂商)都必须打开Secure Boot。因此,消费者购买一台预装Windows 8的台式机或笔记本,想要在上面再安装其他操作系统(包括以前版本的Windows)是不可能的,除非关闭Secure Boot,或者其他操作系统能够通过Windows 8公钥的认证。如果选择关闭Secure Root,那么预装的Windows 8将无法使用,需要重新安装。

Linux的影响Secure Boot规格的本意是,让操作系统厂商自行选择公钥,通过认证。但是实际上,只有微软公司才有能力,让主板厂商内置它的公钥,其他公司都不具备这种能力。 根据微软针对OEM厂商的一则规定,Windows 8要求PC电脑采用UEFI(统一可扩展固件接口),这个接口将会替代PC机诞生以来历史悠久的BIOS固件设置。关于UEFI这个标准接口,是支持WindowsLinux OS X 操作系统的,只是微软要求预装Windows 8 PC电脑需要支持安全性启动机制,启动过程中涉及到的软件/固件都必须打上CA数字签名,这样,对于Linux 这种开源的无签名的系统就会直接阻止。 因此,如果要在打开Secure Boot的主板上安装Linux系统,这个系统就必须通过Windows 8的认证。目前,微软公司把Win8的数字签名外包给了Verisign。操作系统厂商想要通过认证,就必须花99美元,向Verisign买一张数字证书,嵌入自家的操作系统。最新动态是,Linux的各个发行版之中,Ubuntu已经购买了数字证书,FedoraSUSE计划购买,其他发行版还没做出决定。 因此,在预装Windows 8的电脑上安装Linux(或其他操作系统)的最佳做法,就是进入BIOS,关闭Secure Boot。但是,这意味着你花钱买来的Windows 8将无法使用。

目前看上去,Linux购买Windows8的数字证书,是眼下唯一可行的相对容易的解决方法。但是,这种做法不可接受。首先,系统的公钥被微软控制,后果难以预料。如果微软决定更换和废除这个公钥,Linux就要被迫跟进。其次,Linux的启动管理器GrubGPL许可证,该许可证(第三版)明文禁止软件使用密钥配合硬件阻止一部分用户的使用,因此要改用非GPL许可证的启动管理器。再次,只有几个较大的Linux发行版才有能力购买数字证书,较小的发行版和用户自己定制的版本最终还是需要有自己的公钥。

关于移动设备Secure Boot对移动设备的影响,比PC还要严重。微软明确规定,所有PC主板必须带有关闭Secure Boot的选项。这不是因为微软的善意,而是因为如果不这样做,它一定会遭到反垄断起诉。但是,在移动设备领域,微软不占优势,所以它就没有顾虑,规定所有安装Windows的移动设备的Secure Boot必须打开,而且没有关闭选项。 微软的平板电脑Surface RT就是一个最好的例子。它的Secure Boot是打开的,没法关闭,而且微软用了一个不同于桌面电脑Windows 8操作系统的公钥,且不提供获得数字证书的途径。因此理论上,用户不可能在Surface RT上安装其他操作系统。还有报道称,使用Windows Phone 8操作系统的智能手机也将采用这种做法。那么,用户也就不可能在Windows Phone上安装其他操作系统了。

Secure Boot的用意是保证系统安全,但现在似乎成了厂商保护市场垄断、阻碍竞争一种手段。除了微软公司,苹果公司也有这种倾向。在新一代的iPhoneiPad上面安装其他操作系统,似乎是不可能的。(不过一旦iPhoneiPad上面安能装其他操作系统,估计苹果就不是今天这个样子了,苹果玩的就是封闭!其实垄断也是有好处的!) 自由软件基金会呼吁反Secure Boot垄断,就是基于这种考虑:用户应该拥有硬件和软件的使用自由,操作系统应该是开放的,而不是封闭的。作为一种规格,自由软件基金会并不反对Secure Boot,它只是要求硬件厂商提供便利,使得用户可以更容易地安装和管理公钥,从而使用硬件平台对所有操作系统(以及设备驱动)保持开放。

磁盘分区类型:MBRGPT

MBR分区:使用32位表示扇区数,分区不超过2T,按柱面分区。0磁道0扇区是最外层,是引导系统启动区域。它有512Byte,前446Byte是启动加载项,64个字节是分区表,16个字节标识一个分区,所以最多分4个主分区,还有2个自己是55AA标识

GPT分区:使用64位,支持128个分区,使用128UUID表示磁盘和分区,GPT分区表自动备份在头和尾两份,并有CRC校验位,固件有UEFI接口,才支持GPT分区。

安装win7win8经常会出现这种提示Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘。

出现这种情况主要是因为U盘启动时,默认使用EFI引导启动,而不是常见的MBR引导,所以会发生这种情况。这种情况常常出现在原来安装32位系统、现在改安64位系统的过程中。

解决方法一:出现上述问题后,直接把U盘拔掉插到其它电脑,把U盘里的efi文件夹和bootmgr.efi文件删掉,问题就搞定了,然后,再用这个U盘启动盘去装系统,就不会出现这种问题了。
删掉这两个文件夹跟文件的原因是因为从U盘安装会默认使用efi引导启动,删掉之后没有efi,就默认用mbr启动了。

解决方法二:非预装win8机型出厂时,硬盘默认为MBR分区表格式,而UEFI模式仅支持在GPT分区表的硬盘上安装系统。
如果系统安装光盘中包含了UEFI信息,启动时可能会自动加载并进入UEFI模式,因此便会出现“ windows无法安装到这个磁盘,选中的磁盘具有MBR分区表,在EFI系统上,windows只能安装到GFT磁盘”的提示。
建议您尝试以下方法:
开机按ESC键,会显示两个光驱或者U盘的选项,选择光驱名称前没有UEFI的选项启动,即可正常把系统安装在MBR分区表硬盘上。

解决方法三:进入主板选择启动的项目、比如F8、F11之类、u盘启动里有2项、一个是EFI启动、一个是普通启动,安装64位系统、选了EFI启动,就会出错,应该选普通启动。如果光盘安装,进BIOS看看, EFI进入bios看到UEFI状态时,Enabled 如果是启用状态,那么把他禁用掉看看(改为disabled),保存重启,选择光驱启动。但不能选择uefi的光驱模式。

总结:

1.uefi模式下安装win8 ,安装到GFT磁盘,不能安装到MBR硬盘

2.MBR硬盘下安装win 8,关闭Secure Boot,采用传统引导模式

转载于:https://blog.51cto.com/gzkhrh/1795850

uefi与win8 (根据网络资料整理)相关推荐

  1. ffmpeg的编译(for x86,for arm)安装及使用(网络资料整理)

    ffmpeg编译及使用 1 ffmpeg介绍  ffmpeg是音视频的分离,转换,编码解码及流媒体的完全解决方案,其中最重要的就是libavcodec库.它被mplayer或者xine使用作为解码器. ...

  2. 递归神经网络 训练、推到、实现(网络资料整理)_codestorm_新浪博客

    参考: RNN求解过程推导与实现 人人都能用Python写出LSTM-RNN的代码![你的神经网络学习最佳起步] Hinton 的课件 我的最佳学习法就是通过玩具代码,一边调试一边学习理论.这篇博客通 ...

  3. usbkey (根据网络资料整理)

    USB KEY也叫UKEY,USBKey,USB Token,国内习惯翻译成U盾,或者优盾. 工行的USB Key产品为"U盾",招行的USB Key产品为"优Key&q ...

  4. 框架之Vue篇:架构及部署(网络资料整理)

    一.概要 Vue.js 是一套构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层.Vue 的目标是通过尽可能简单的 API 实现响应的 ...

  5. 长尾效应(由百度网络资料整理)

    Long Tail Effect "头"(head)和"尾"(tail)是两个统计学名词.正态曲线中间的突起部分叫"头":两边相对平缓的部分 ...

  6. sql查询语句解析过程--根据网络资料整理

    查询语句: (8)SELECT(9)DISTINCT(11)<TopNum> <selectlist> (1)FROM<left_table> (3)<joi ...

  7. 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, ...

  8. 开机秒全国99%电脑 实战UEFI安装Win8

    作为平板中一大阵营的主力 产品, Surface Pro可以说是让大家梦寐以求的.我们喜欢它的外观.它的性能.以及它的快速开机--众所周知,Surface Pro可以说是 Windows 8展示各种新 ...

  9. epoll相关资料整理

    http://www.cppblog.com/converse/archive/2008/10/13/63928.html epoll相关资料整理 学习epoll有一段时间了,最近终于有一个服务器采用 ...

最新文章

  1. mantis在windows下的安装
  2. python 列表赋值操作可能存在的潜在问题
  3. ASP.NET Web API 特性
  4. NAACL 2019 | 一种考虑缓和KL消失的简单VAE训练方法
  5. php7插件开发,php7.2.6 插件fileinfo的安装
  6. Java文件操作增强工具
  7. 运筹学 $5约束极值
  8. ArcGIS Server Image 扩展模块
  9. cad文字递增快捷键_史上最全CAD快捷键命令大全(图文版、文字版、键盘版)
  10. 通过 mpu6050加速度计算角度
  11. 公司的IT总监在公司里是什么样的角色?
  12. 使用Pyecharts进行全国水质TDS地图可视化全过程9:构建字典,批量生成所有省份地图
  13. 一壶浊酒尽余欢、今宵别梦寒!
  14. 校园网不能建立到远程计算机,校园网已拒绝远程连接是什么问题及如何解决
  15. HDU1814 求2-sat字典序最小的解
  16. shell+curl+fortune+pushplus–>每日一言
  17. shell脚本回车换行_终于搞懂了回车与换行的区别
  18. 【浙大pta大计基】
  19. 三步学会在noi linu下对拍
  20. Meta首席运营官宣布离职 入职14年助推公司市值超万亿美元

热门文章

  1. 1-2 移动均线交叉策略1
  2. UG NX 12 组合投影曲线
  3. 中国传媒大学计算机课程表,中国传媒大学新闻学院课程表.doc
  4. 如何系统学游戏建模?游戏建模必备知识有哪些?
  5. VS2015程序出现缺少dll文件解决方法
  6. args 打印输出argparse.ArgumentParser()的所有选项和默认值
  7. 前端程序猿必备的网站
  8. API 的理解与使用- 键管理
  9. 线性代数A矩阵乘以A的转置的含义或者几何意义
  10. FBT熔融拉锥大芯径多模光纤耦合器简介