UEFI “取代”了 BIOS 并“与固件连接”,但是 BIOS == 固件,所以 WTF?

UEFI “取代”了 BIOS 并“与固件连接”,但是 BIOS == 固件,所以 WTF?

如果你在 Google 上搜索“UEFI 定义”,你会发现:

统一可扩展固件接口 (UEFI) 是一种软件程序规范将计算机固件连接到操作系统 (OS)UEFI 有望最终取代 BIOS

好吧,它取代了 BIOS,将计算机的固件连接到操作系统。但是 BIOS 是什么?BIOS 不就是“计算机的固件”吗?(见此苏答案

因此,我是否应该得出结论,所有这些 UEFI 的定义以及以下其他图片(来自维基页面) 是完全无意义且完全不准确的吗?

UEFI 图

(...在这张图片中,如果固件意味着 BIOS,那么 UEFI 应该再次取代什么?)

答案1

不同的人以不同的方式使用这个领域的术语,因此没有 100% 的一致性,这可能会导致混淆。话虽如此……

  • 固件-- 此术语通常指存储在主板或其他硬件设备上的芯片上的软件。(SSD、USB 闪存驱动器和类似的闪存是明显的例外;存储在此类设备上的软件不是固件,控制 SSD 本身的固件除外。)主板、一些(但不是全部)插卡、硬盘、路由器、交换机和许多其他计算机组件都有固件。现代设备通常具有可软件升级的固件 - 您可以运行一个程序,用更新的固件替换旧固件。
  • BIOS——该术语通常以以下两种方式之一使用:
    • 狭义——狭义地应用,BIOS指 1980 年代到最近(大约 2011 年)期间内置于原始 IBM PC 或其任何克隆产品中的固件。这种类型的 BIOS 使用 16 位代码和一组控制接口,使计算机能够启动 DOS、Windows、OS/2、Linux 和其他操作系统。这是一组非常具体的功能,可将此 BIOS 与其他计算机(例如 Apple II、Apple Mac 甚至现代基于 EFI 的 PC)上使用的固件区分开来。
    • 广义上——从最广泛的用法来看,BIOS指计算机主板上的固件。这可能是十年前的 x86 PC、现代 PC、Apple II 等。就我个人而言,我不喜欢这种用法,因为最初的 IBM PC 及其克隆产品已经占据了主导地位,以至于当使用术语“BIOS”时,人们通常会想到它的 BIOS;因此,当该术语用于指代另一种类型的固件时,人们会引入对 IBM PC 风格 BIOS 的错误假设。
  • 电喷-- EFI(或统一 EFI [UEFI],即 EFI 2.x 版)是计算机主板的一种现代固件。虽然在您分享的图表中,EFI 与固件是分开的,但 EFI 通常存储在主板上的芯片中,因此大多数人认为它是固件的一部分;但是,它可以作为从硬盘加载的程序运行。它还依赖于固件中的基本硬件初始化代码——也就是说,EFI 不是整体固件。(相比之下,老式 PC BIOS 会进行这种初始化。)EFI 旨在取代 BIOS,尽管一些早期的 x86/x86-64 实现使用 BIOS 进行这种较低级别的硬件初始化。大多数现代 EFI 并不以这种方式依赖 BIOS,尽管有一个不同之处——兼容性支持模块 (CSM) 是一个 EFI 组件,它允许 EFI 运行为基于 BIOS 的计算机设计的引导加载程序。因此,大多数基于 EFI 的 x86-64 系统可以使用 BIOS 引导加载程序或 EFI 引导加载程序进行引导。虽然这种能力在某些情况下无疑是有用的,但它在其他情况下也会产生比解决的问题更多的问题,正如我在我的这个页面。

因此,使用这些术语,BIOS电喷有两种不同类型的固件。(还有其他固件,例如开放固件维基百科))但有些人却使用BIOS固件或多或少是同义词,尤其是在指主板上的固件时。在这个系统中,EFI 是一种 BIOS。我不喜欢第二种方法,因为人们倾向于根据 PC 前三十年的历史来推断——例如,引导加载程序驻留在硬盘的 MBR 中——而这些假设并不适用于基于 EFI 的计算机。不幸的是,许多 PC 制造商使用BIOS固件作为同义词。

您可能还想查看这个问题和我的回答这与您的问题相关但不完全相同。

相关内容