我买了一块新的华硕主板,但开机时会提示按一下按钮进入“UEFI BIOS 设置”。但主板不是使用 UEFI 作为固件吗?它怎么会有 BIOS?
更新:我已经在“UEFI BIOS”设置中禁用了 CSM,所以它不应该有 BIOS,对吧?
答案1
多年来,人们普遍认为计算机是通过运行称为“基本输入/输出系统”(简称 BIOS)的代码来启动的。
尽管某些 BIOS 实现比其他 BIOS 实现具有更多功能,例如较新的 BIOS 版本比旧 BIOS 版本支持更大的硬盘,但 BIOS 编程包含大量代码,有助于使大多数 IBM 兼容计算机与其他 IBM 兼容计算机兼容。
随着 64 位 PC 的发布,以及由于硬盘超出 MBR 的最大 2 TB(假设扇区大小为 512 字节)而需要替换 MBR 标准等发展,人们对重写原始代码产生了一些兴趣。
然后,人们开始说新代码称为 UEFI,而不是 BIOS。尽管 UEFI 比大多数完整操作系统更简单,但它并不那么基础,而且它做的事情也不同,所以它与许多 BIOS 实现的旧系统兼容性并不好。所以给它起个新名字是有道理的。
然而,似乎有些人对 UEFI 和 BIOS 之间的区别感到困惑。基本上,UEFI 编程处理了旧 BIOS 编程的功能。一些制造商决定不再对 UEFI 和 BIOS 进行大区分,可能是因为这会给客户带来困惑。
随着 UEFI 的普及,以及开发人员对其的了解越来越多,一些开发人员可能已向 UEFI 添加了一些功能,使其更像旧标准,从而可能与某些旧设备和/或旧软件提供更多兼容性。在这种情况下,同时使用“UEFI”和“BIOS”这两个术语是有道理的(如果支持这两个功能集,即使它们不能同时得到完全支持)。
如果您看到 UEFI 一词,最好将您的系统视为支持较新的标准,因此请寻找 UEFI 兼容性并坚持使用。(这更有可能为您提供更多新硬件和新软件的灵活性。)
答案2
IBM 发布了第一台 PC,其特点是基本输入输出系统,早期克隆制造商的任务之一就是复制此 BIOS。因此,截至 2011 年年中,销售的绝大多数 x86 和 x86-64 计算机都使用 BIOS——要么是 IBM 的原始 BIOS,要么是其他公司(如 Phoenix 或 AMI)制造的克隆版。
然而,按照现代标准来看,BIOS 非常有限且笨重,并且阻碍了硬件的发展。因此,对更灵活的东西的需求日益增长。业界最终选择了可扩展固件接口 (EFI),最常见的是其 2.x 版本,即统一 EFI(UEFI)。(不过,Apple 仍然使用 1.1 版 EFI。除非我特指 2.x 版 UEFI,否则我更倾向于使用“EFI”而不是“UEFI”,因为“EFI”更通用。)EFI 修复了 BIOS 的许多限制。例如,BIOS 是 16 位的,需要切换位深度才能启动任何现代操作系统;BIOS 是用汇编代码编写的,理解的人相对较少,因此限制了维护它的开发人员数量;BIOS 不理解分区表或文件系统,这意味着必须将引导加载程序代码压缩到单个扇区的极小空间中(尽管大多数引导加载程序都包含第二阶段,限制较少)。EFI 修复了所有这些问题。不幸的是,EFI 还带来了其他问题,其中大多数与您的问题并不相关。
至少在某种程度上相关的一个 EFI 问题是,基于 EFI 的计算机的启动方式必然与基于 BIOS 的计算机完全不同。因此,每个支持 EFI 的操作系统都需要一个新的 EFI 引导加载程序。如果操作系统缺少此引导加载程序,或者它依赖于 BIOS 为正在运行的操作系统提供的服务,它将无法在基于 EFI 的计算机上运行。为了解决这一限制,大多数(但不是全部)现代 EFI 都提供了一项称为兼容性支持模块 (CSM) 的功能,它本质上是 EFI 的 BIOS 模拟器。也就是说,CSM 之于 EFI 就像是 Linux 之于 EFI dosemu
——一种让更复杂的环境(EFI 或 Linux)运行为不太复杂的环境(BIOS 或 DOS)编写的代码的方式。CSM 解决了一些问题,但本身也带来了许多新问题;请参阅我关于这个主题的页面了解详情。
不过,CSM 与您的问题只是外围关系。您的问题的真正答案是,至少在我看来,许多人,甚至制造商,都在误用术语。EFI 与 BIOS 有着根本的不同。EFI 和 UEFI 规范确实不是将其称为 BIOS。尽管规范没有直接解决这个问题,但据我所知,从上下文可以清楚地看出,规范的编写者认为 EFI/UEFI 是一种替代品BIOS。恕我直言,BIOS 和 EFI 都是固件的例子,就像福特 Escort 和雪佛兰 Bolt 都是汽车的例子一样。正如将雪佛兰 Bolt 称为福特 Escort 是错误且具有误导性一样,将 EFI 称为 BIOS 也是错误且具有误导性的。
我怀疑(但不确定)制造商将其 EFI 称为“BIOS”或“UEFI BIOS”,仅仅是因为“BIOS”一词对许多用户来说很熟悉,而新的缩写词会让用户感到困惑。扩展我的汽车类比,这就像使用“Xerox”作为“复印机”的同义词,尽管“Xerox”是一个特定的品牌名称。因此,在预期的上下文中使用“BIOS”或“UEFI BIOS”可以提供一些熟悉感(例如固件设置实用程序屏幕),就像说“去复印这份文件”被理解为复印,即使复印机是由其他公司制造的。不幸的是,它还导致人们将 BIOS 模式知识拖入其中,而这些知识是不是适用。有许多这些问题是由那些犯了轻微或巨大的因为他们期望基于 EFI 的计算机能够像基于 BIOS 的计算机一样工作,所以犯了错误。他们不是尽管制造商有时会尝试让它们看一样。
使用“BIOS”指代 EFI 的一个可能的辩护是,“BIOS”曾被用来指代非 IBM 风格计算机的 BIOS,如 Apple II 计算机。因此,“BIOS”并不一定意味着 IBM PC 或兼容机的 BIOS。不过,这样的例子相当晦涩和/或陈旧;对于 2010 年的大多数计算机知识渊博的人来说,“BIOS”是指 IBM 兼容计算机中的固件,具有该平台特有的所有怪癖——这些怪癖不要适用于基于EFI的计算机。
有关 EFI 和 EFI 模式启动的更多信息,请参阅:
- Adam Williamson 的博客文章介绍了 EFI 的工作原理—— 本页描述了 EFI 模式启动背后的理论。
- 本站关于 BIOS 和 EFI 启动区别的问答—— 这提供了前面内容的基础,但更加简洁。
- 我的关于在 EFI 系统上安装 Linux 的页面—— 与 Adam Williamson 的博客相比,此页面对 EFI 模式启动进行了更实用的介绍。
- 我的 CSM 页面——本页介绍了 CSM,包括它何时有用以及何时没用。