UEFI“替换”BIOS并“连接固件”但BIOS ==固件所以WTF?

lap*_*pin 3 firmware bios efi uefi

如果您在谷歌上寻找“UEFI 定义”,您会发现:

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

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

那么我是否应该得出结论,UEFI 和其他图片的所有这些定义(从wiki 页面声明)都是完全没有意义的完全不准确的?

UEFI图

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

Rod*_*ith 5

不同的人以不同的方式使用该领域的术语,因此并非 100% 一致,这可能会导致混淆。那个说....

  • 固件——这个术语通常是指存储在主板或其他硬件设备芯片上的软件。(SSD、USB 闪存驱动器和类似的闪存是显着的例外;存储在此类设备上的软件不是固件,除了控制 SSD 本身的固件。)主板、一些(但不是全部)插件卡、硬盘、路由器、交换机和许多其他计算机组件都有固件。现代设备通常具有可软件升级的固件——您可以运行一个程序,用更新的固件替换旧固件。
  • BIOS -- 该术语通常用于以下两种方式之一:
    • 狭义地——狭义地应用,BIOS是指内置于原始 IBM PC 或其从 1980 年代直到最近(大约 2011 年)的任何克隆中的固件。这种类型的 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(或统一 EFI [UEFI],只是 EFI 2.x 版)是一种现代类型的计算机主板固件。尽管在您分享的图表中它与固件分开显示,但 EFI 通常存储在主板上的芯片中,因此大多数人认为它是固件的一部分;但是,它可以作为从硬盘加载的程序运行。它还依赖于固件中的基本硬件初始化代码——也就是说,EFI 不是全部固件。(相比之下,旧式 PC BIOS 执行此初始化。)EFI 旨在取代 BIOS,尽管一些早期的 x86/x86-64 实现使用 BIOS 来执行较低级别的硬件初始化。大多数现代 EFI 不以这种方式依赖 BIOS,尽管有一个转折——兼容性支持模块 (CSM) 是一个 EFI 组件,它允许 EFI 运行专为基于 BIOS 的计算机设计的引导加载程序。因此,大多数基于 EFI 的 x86-64 系统可以使用 BIOS 引导加载程序或 EFI 引导加载程序进行引导。虽然这种能力在某些情况下无疑是有用的,但它也可能产生比在其他情况下解决的问题更多的问题,正如我在我的这个页面上详细描述的那样

因此,使用这些术语的方式,BIOSEFI是两种不同类型的固件。(也有其他的,比如OpenFirmware ( wiki )。)不过,有些人将BIOS固件用作或多或少的同义词,尤其是在提到主板上的固件时。在这个系统中,EFI 是一种 BIOS。我不喜欢第二种方法,因为人们倾向于根据 PC 历史的前 30 年做出假设——例如,引导加载程序驻留在硬盘的 MBR 中——这不适用于基于 EFI 的计算机。不幸的是,许多 PC 制造商使用BIOS固件作为同义词。

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