BIOS的全称为"Basic Input Output System",意思为“基本输入输出系统”。 最初是由Gary Kildall发明,第一次出现是在1975年的CP/M操作系统中。描述CP/M的机器特定部分启动时,接口直接加载的硬件。(一个CP/M机器的ROM中通常只有一个简单的引导加载程序)。 多种版本的MS-DOS,PC-DOS或DR-DOS含有一个被称为"IO.SYS”,“IBMBIO.COM”,“IBMBIO.SYS”或“ DRBIOS.SYS”等名字的文件;这个文件就是所谓的“DOSBIOS”(也称为“DOS I/O系统”),它包含操作系统中的较低级别的硬件指定的部分。它与底层硬件特有的,但独立于操作系统的固化在ROM的“系统BIOS”,共同它代表了“CP/M BIOS”。 通过引入PS / 2的机器,IBM将系统BIOS分为真实模式和保护模式部分。真实模式部分是为了提供与现有的操作系统,如DOS的向后兼容性,因此被命名为“CBIOS”(用于兼容性BIOS),而“ABIOS”(高级BIOS)则提供适合多任务处理的新的操作系统如OS/2的接口。 英特尔公司从2000年开始,发明了可扩展固件接口(Extensible Firmware Interface),简称EFI,用以规范BIOS的开发。而支持EFI规范的BIOS也被称为EFI BIOS。之后为了推广EFI,业界多家著名公司共同成立了统一可扩展固件接口论坛(UEFI Forum),英特尔公司将EFI 1.1规范贡献给业界,用以制订新的国际标准UEFI规范。目前UEFI规范的最新版本是2.3.1,英特尔公司曾经预测,2010年,全世界或有有60%以上的个人电脑使用支持UEFI规范的BIOS产品。 说到这里,不得不提一个新名词“安全启动”,英文为” Secure Boot”。 Secure Boot只是UEFI的一个部分。一定要注意两者的关系是局部与整体的关系,也就是说有“安全启动”的主板一定支持EFI,但是EFI的主板不一定需要“安全启动”。 Secure Boot的目的,是防止恶意软件侵入。它的做法就是采用密钥。UEFI规定,主板出厂的时候,可以内置一些可靠的公钥。然后,任何想要在这块主板上加载的 操作系统或者硬件驱动程序,都必须通过这些公钥的认证。也就是说,这些软件必须用对应的私钥签署过,否则主板拒绝加载。由于恶意软件不可能通过认证,因此 就没有办法感染Boot。 这个设想是好的。但是,UEFI没规定哪些公钥是可靠的,也没规定谁负责颁发这些公钥,都留给硬件厂商自己决定。现在,微软就是要求,主板厂商内置Windows 8/8.1/10的公钥。 首先明确,在不打开Secure Boot的情况下,Windows 8/8.1/10可以安装。这与安装以前版本的Windows没有差别。 但是,微软规定,所有预装Windows 8/8.1/10的厂商(即OEM厂商)都必须打开Secure Boot。因此,消费者购买一台预装Windows 8/8.1/10的台式机或笔记本,想要在上面再安装其他操作系统(包括以前版本的Windows)是不可能的,除非关闭Secure Boot,或者其他操作系统能够通过Windows 8/8.1/10公钥的认证。 如果选择关闭Secure Root,那么预装的Windows 8/8.1/10将无法使用,需要重新安装。 Secure Boot规格的本意是,让操作系统厂商自行选择公钥,通过认证。但是实际上,只有微软公司才有能力,让主板厂商内置它的公钥,其他公司都不具备这种能力。 根据微软针对OEM厂商的一则规定,Windows 8/8.1/10要求PC电脑采用UEFI(统一可扩展固件接口),这个接口将会替代PC机诞生以来历史悠久的BIOS固件设置。关于UEFI这个标准接口,是支持 Windows、Linux 和 OS X 操作系统的,只是微软要求预装Windows 8/8.1/10 的PC电脑需要支持安全性启动机制,启动过程中涉及到的软件/固件都必须打上CA数字签名,这样,对于Linux 这种开源的无签名的系统就会直接阻止。 因此,如果要在打开Secure Boot的主板上安装Linux系统,这个系统就必须通过Windows 8/8.1/10的认证。 目前,微软公司把Win8的数字签名外包给了Verisign。操作系统厂商想要通过认证,就必须花钱向Verisign买一张数字证书,嵌入自家的操作系统。 最新动态是,Linux的各个发行版之中,Ubuntu已经购买了数字证书,Fedora和SUSE计划购买,其他发行版还没做出决定。 因此,在预装Windows 8/8.1/10的电脑上安装Linux(或其他操作系统)的最佳做法,就是进入BIOS,关闭Secure Boot。但是,这意味着你花钱买来的Windows 8/8.1/10将无法使用。 目前看上去,Linux购买Windows8的数字证书,是眼下唯一可行的相对容易的解决方法。但是,这种做法不可接受。 下面来讲讲Windows操作系统支持的BIOS或EFI引导情况,用一张表格来看一下。(请注意:BIOS可以看作为16位环境;但EFI又分为32位和64位两个环境,操作系统的位宽需要与EFI的位宽相同。) 需要注意的是Vista和Win7不支持“安全启动”。 再来看看Windows操作系统与MBR和GPT的关系。 我们通常说的MBR或GPT,一般指的是分区表的类型。 传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容。由于MBR扇区只有64个字节用于分区表,所以只能记录4个分区的信息。这就是硬盘主分区数目不能超过4个的原因。后来为了支持更多的分区,引入了扩展分区及逻辑分区的概念。但每个分区项仍用16个字节存储。 主分区数目不能超过4个的限制,很多时候,4个主分区并不能满足需要。另外最关键的是MBR分区方案无法支持超过2TB容量的磁盘。因为这一方案用4个字节存储分区的总扇区数,最大能表示2的32次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB。磁盘容量超过2TB以后,分区的起始位置也就无法表示了。在硬盘容量突飞猛进的今天,2TB的限制早已被突破。由此可见,MBR分区方案现在已经无法再满足需要了。 GPT分区表是一种由基于 Itanium 计算机中的可扩展固件接口 (EFI) 使用的磁盘分区架构。与主启动记录(MBR) 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区,支持高达 18 千兆兆字节的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。 与支持最大卷为 2 TB (terabytes) 并且每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)的主启动记录 (MBR) 磁盘分区的样式相比,GUID 分区表 (GPT) 磁盘分区样式支持最大卷为 18 EB (exabytes,1EB=1024PB,1PB=1024TB,1TB=1024GB,1GB=1024MB,1MB=1024KB。18EB=19 327 352 832GB) 并且每磁盘最多有 128 个分区。与 MBR 分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT 分区磁盘有多余的主要及备份分区表来提高分区数据结构的完整性。 Windows全系列操作系统支持MBR的读取及引导,但是GPT的读取和引导有一些不同。 32位的XP系统不支持GPT的读取及引导,但是可以通过替换2003系统里的disk.sys驱动文件来达到识别GPT分区的目的,但依旧不支持GPT引导。而64位的XP和全部的2003系统则支持GPT分区的读取但不支持引导。 从Vista开始就支持GPT分区的读取及引导了。 其实32位的XP内核版本号是5.1,而64位的XP和全部的2003的内核版本号则为5.2。 所以我们可以这样说:从Windows 5.2开始支持GPT的读取但不支持引导,从Windows 6.0开始支持GPT的读取及引导。 知道了这么多信息,其实还要注意一点,GPT的引导是需要主板的EFI环境,这是硬性条件。(当然还有一种复杂的改造的MBR与GPT的混合磁盘,这种就比较复杂及特殊了,这里就不介绍了。)
|