UEFI 全称“统一的可扩展固定接口”(Unified Extensible Firmware Interface)。所谓UEFI,实际上就是Intel 当年提出的EFI。相比古老陈旧的BIOS系统,UEFI 拥有诸多优势,这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上,从而使开机程序化繁为简,节省时间。
BIOS作为电脑开机的最基本引导软体,使用如今已有25年的历史了。而在此刻PC的架构将迎来彻底的革新,BIOS的时代即将彻底终结下一代电脑启动时间仅需数秒。BIOS程序以16位汇编代码、寄存器参数调用方式、静态链接以及1MB以下内存固定编址的形式存在了十几年,虽然各大BIOS厂商近年来努力得对其进行改进,加入了许多新元素到产品中,如ACPI、USB支持等,但BIOS的根本性质没有得到任何改变,16位的运行工作环境是其最为致命的缺点。BIOS发展到现在,用来存放BIOS程序的芯片最大不过2Mb,换成实际字节就是256KB,面对这个数值,即使你想为BIOS编写一些新的功能,BIOS芯片中也不会有足够的空间让你写入。并且对于现代PC来说,BIOS需要很长的时间进行预热检测。这也是BIOS这十几年来一直停滞不前的原因之一。
BIOS的最新替代品,UEFI将会电脑市场中占有主导位置。
UEFI的发展史
EFI的出现第一次被正式提出,是在2000年的Intel春季IDF(Intel Developer Forum)上,由Inetl提出的标准,经过几次修订,现在已经到了EFI 1.10版,而2.0版正由UEFI这个组织制定中(故EFI也现称为UEFI)。从某个角度来讲,Intel在当时推出EFI主要为将来电脑固件能兼容于各种不同架构平台布局;例如EFI可运用在Itanium、Pentium甚至XScale平台上。最初,共同发展EFI的业者包括Intel、AMI和台湾业者Insyde,后来由于EFI确实具有足够的前瞻性,产业间成立了UEFI(Unified EFI)论坛,共同开发适用于各平台的PC固件标准。基本上,UEFI是基于原有的EFI 1.10为基础,正在进行UEFI 2.0的制定工作。
对比采用传统BIOS引导启动方式,UEFI BIOS减少了BIOS自检的步骤,节省了大量的时间,从而加快平台的启动。
MBR 与 GPT
Legacy BIOS模式使用的是MBR来记录分区,而UEFI BIOS模式使用的GPT来记录分区。
MBR:主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。
MBR 的限制:
在MBR 分区表中最多 4 个主分区或者 3 个主分区+1 个扩展分区:从主引导记录的结构可以知道,它仅仅包含一个 64 个字节的硬盘分区表。由于每个分区信息需要 16 个字节,所以对于采用 MBR 型分区结构的硬盘,最多只能识别 4 个主要分区(Primary partition)。
MBR 分区方案无法支持超过 2TB 容量的磁盘。因为这一方案用 4 个字节存储分区的总扇区数,最大能表示 2 的 32 次方的扇区个数,按每扇区 512 字节计算,每个分区最大不能超过 2TB 。磁盘容量超过 2TB 以后,分区的起始位置也就无法表示了。
GPT:全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的。相对于 PC 常用的较旧的主引导记录 (MBR) 分区方案,GPT 提供了更加灵活的磁盘分区机制。
GPT 使用 GUID 分区表 (GPT) 磁盘分区系统。GPT 磁盘提供了以下好处:
最多允许 128 个分区;主引导记录 (MBR) 磁盘可以支持 4 个主分区和扩展分区内的 124 个附加分区。
允许大于 2 TB 的卷容量,而 2 TB 是 MBR 磁盘的极限。
由于分区表提供了复制和循环冗余校检 (CRC) 保护,所以更加可靠。
能在所有基于 x64 平台上用作存储卷,包括运行 Windows XP Professional x64 Edition 的平台。从 Windows Server 2003 SP1 开始,GPT 磁盘也可用作基于 x86 的Windows 平台上的存储卷。
可用作基于 x64 的 Windows 7、Windows Vista 和Windows Server 2008 版本上的引导卷。从 Windows Server 2003 SP1 开始,GPT 磁盘也可用作基于 Itanium 的系统上的引导卷。
目前UEFI启动模式支持长64位系统,32位系统不被支持。在UEFI BIOS中,为了兼容以前的操作系统,还提供了Legacy BIOS模式,以G480 BIOS为例:
在此模式下,传统的MBR引导方式的系统,可以正常安装系统,在安装需要以GPT分区的系统时,就会提示无法安装。
此模式下,引导方式为UEFI,与上一种模式相反。
目前,大家使用的机器可能都比较老,可能没有UEFI模式,想要了解2种模式的不同之处,没有办法进行测试。不过我们可以使用VMware虚拟机进行测试,来弥补硬件的不足,从VMware 8.0开始,虚拟机已经开始支持UEFI了,只不过需要我们手动来改一下代码(注意:紧支持64为系统)。
VMware 8.0、9.0、 10.0都测试过,没有问题,cpu的虚拟化功能要开启,否则不能建立64位系统,下面以9.0版本为例讲一下:
首先新建一个虚拟机创建一个新的虚拟机,很大家平时创建虚拟机的步骤是一样的。
然后,打开虚拟机测存储位置,找到,vmx文件。
然后再此文件中添加一行代码,firmware=”efi”到文件中,保存退出。(使用之前建好的64位系统也可以)
开机后进入BIOS,就会发现里边的内容和之前不一样了。(注意windows7系统可能会没有变化,修改的代码有时会被改回,firmware=”bios”,解决办法就是关闭虚拟机,重新修改.vmx文件,以管理员身份运行就不会有问题了)
修改启动顺序时,就会发现都是启动项里都是EFI开头的,这个模式下,无需修改任何参数,就可以像真机一样使用U盘来安装操作系统,不用再在把u盘做成虚拟机的硬盘了,直接可以引导。大家会发现,我这界面里第一项是CentOS,这是因为已经安装好了操作系统,虚拟机会自动把EFI分区添加到启动项里,并识别硬盘中的操作系统。
挂上系统镜像,就可以安装系统了。在分区的时候按照以往的自定义形式分区,就会发现无法进行下一步,系统会提示你没有创建EFI分区(“You have not created a /boot/efi partition”)。
这时,重新分区,建立一个efi分区,大小200MB就可以了,再小一点也没关系,只要够放启动文件就OK了。
如果是全新的硬盘直接下一步,就可以安装了,系统会自动白硬盘改成GPT形式,如果是使用过的硬盘,可能就会出现sda必须修改GPT标签(“sda must have a GPT disk lable”)。
这时候我们需要使用parted命令,来修改GPT标签,fdisk命令已经无能为力了。按“Ctrl+Alt+F2”进入命令行,输入parted,如果有多块硬盘,要用select来选择硬盘,默认是sda,然后输入mklabel gpt(改成传统的MBR模式输入mklabel msdos),然后输入yes,就执行了,quit退出,如果有有分区,先全部删除,在修改标签。之后用快捷键返回图形界面,先后退一下,在继续进行安装,否则系统还会提示要修改标签。之后就和大家平时安装的步骤一样了。
此外EFI该模式下,还提供了EFI shell,帮助大家用命令来排除问题。这个大家就自己研究吧。
安装windows系统时,也类似这样操作,windows下一般只要全部分区都删除掉,系统会自动创建EFi分区并修改标签,当然也有例外的时候,这就需要我们手动去处理了。
此时我们需要按SHIFT+F10键进入CMD模式,使用DISKPART磁盘工具,将MBR分表区转为GPT模式,select disk 0,选择0号磁盘,list disk,列出系统拥有的磁盘,list partition,列出磁盘上的分区,clean,清除磁盘,该命令会抹去磁盘上所有数据,convert gpt将磁盘从MBR转换为GPT。Convert basic,-将磁盘从动态转换为基本convert dynamic,将磁盘从基本转换为动态convert gpt将磁盘从MBR转换为GPT,convert mbr将磁盘从GPT转换为MBR。
具体操作命令如下:
(注意,更改分区模式硬盘里的数据会全部丢失,请提前备份好数据再进行此操作)
操作完成,关闭此命令提示符窗口,继续按照正常的方法安装Windows系统即可。
以后使用UEFI模式引导的主板会越来越多,硬盘空间越来越大,像提供视频类服务的公司,服务器很需要大于2TB的分区,UEFI+GPT的大数据时代已经来临,大家都提前学习一下吧。