AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1450261
Accepted
Tom Milberg
Tom Milberg
Asked: 2019-06-19 13:22:46 +0800 CST2019-06-19 13:22:46 +0800 CST 2019-06-19 13:22:46 +0800 CST

UEFI 是否在 BIOS 之上运行?

  • 772

此页面:https ://wiki.osdev.org/UEFI和其他一些值得信赖的页面提到 UEFI 是一种在 BIOS(旧版 BIOS)上运行的应用程序,而不是固件如果我没看错的话。其他一些人声称它们只是一起运行(BIOS + UEFI)。这不是关于错误地将 UEFI 称为“UEFI BIOS”(这是另一回事,不是我的问题)。

但据我所知,BIOS 和 UEFI 是固件接口,是彼此的替代品。BIOS 是传统的,而 UEFI 是更先进的现代替代品。

那么现实是怎样的呢?

bios uefi
  • 5 5 个回答
  • 1712 Views

5 个回答

  • Voted
  1. Best Answer
    barlop
    2019-06-20T07:40:59+08:002019-06-20T07:40:59+08:00

    您链接到https://wiki.osdev.org/UEFI的文章 使用了其他人没有使用过的奇怪术语。所以那篇文章说 BIOS 首先运行,然后是 UEFI,但事实并非如此。

    术语 BIOS 有一个“通俗”的定义或用法,还有一个技术定义。

    (那篇文章的术语都不是那些,那篇文章的术语太离谱了)

    所以现在让我们先抛开那篇文章对 UEFI 和 BIOS 的奇怪定义,看看 UEFI 和 BIOS 的定义以及它们是如何使用的。

    术语 BIOS 的通俗定义或用法,不仅仅是将 BIOS 称为 BIOS,而是将 UEFI 称为 BIOS。这可能是因为他们通常使用术语 BIOS,或者可能他们只是称 UEFI 为 BIOS,因为他们认为这个术语对人们来说更熟悉,因为 BIOS 已经存在了很长时间,对最终用户甚至对于大多数计算机技术人员来说,它看起来是一样的。他们甚至可能会说 UEFI BIOS,意思是 UEFI。这可能是因为我们普遍使用 BIOS,并将 UEFI 视为一种 BIOS。或者他们之所以这么说,是因为有些人可能不知道 UEFI 是什么,并且在它后面加上 BIOS 这个词,他们认为这让人们更清楚,因为从最终用户和大多数计算机技术人员的角度来看,它们看起来是一样的。例如他们有一个配置页面,你可以选择引导顺序。

    https://www.howtogeek.com/56958/htg-explains-how-uefi-will-replace-the-bios/ “即使您的 PC 使用术语“BIOS”,您今天购买的现代 PC 几乎肯定会附带 UEFI固件而不是 BIOS。”

    所以,计算机有时会使用口语化的定义,例如它说按 F2/Escape/F10/whatever 进入 BIOS。或者说按任意键进入设置,然后显示“BIOS 版本 ..”。实际上,从技术上讲,它不是 BIOS,而是 UEFI。

    在计算机启动时,在处理器执行任何操作之前会发生一些事情。即在它运行“重置向量”中的固件之前,那是在任何 BIOS 或 UEFI 之前。以下是对随后发生的情况的一些描述,http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699 ?pgno=1 。(文章也将在之后继续)。有一个可编程的 CPLD,它运行软件,即固件。那是非常晦涩的。人们在说主板固件时几乎从来都不是这个意思。该固件调节电源和时钟,然后让 CPU 复位并启动。

    我不认为 BIOS 这个词会这么早就适用于任何事物!UEFI 也不会。因此,当像维基百科这样的来源在其关于 BIOS 的文章中说 BIOS 是“开机时运行的第一个软件”时,这在技术上是不正确的,原因有二。A) 因为即使系统运行的是 BIOS 而不是 UEFI,BIOS 仍然不会是第一个运行的东西。B) 如果系统正在运行 UEFI,则不会有任何 BIOS 运行!

    当 CPU 开始其提取解码执行周期时,它从称为重置向量的内存部分开始 - 它具有或指向 BIOS 或 UEFI。

    一些可能较旧的来源可能已经谈到 UEFI BIOS,意思是 UEFI。例如,这个写于 2013 年的来源https://www.alphr.com/features/381565/uefi-bios-explained 谈到了 UEFI BIOS 但正确地说它没有那么有意义并且属于术语 UEFI ,这就是它的意思通过 UEFI BIOS。我在 2011 年提到的 Dr Dobbs 链接也使用短语“UEFI BIOS”来表示 UEFI。您的消息来源使用的术语更奇怪。

    BIOS 的通俗定义(作为通用术语)可能相当陈旧和过时。

    如果有人想要 UEFI 和 BIOS 的通用术语,那么“由 CPU 运行的主板固件”将是正确的。

    技术定义/用法,实际上是当前的定义/用法,是 UEFI 替换 BIOS。

    看着那篇文章及其独特的奇怪错误术语

    您链接到的 osdev 文章使用了只有它使用的陌生术语!似乎是指BIOS或UEFI的起始部分,它们有共同之处,都称为BIOS。因此,如果您有 UEFI,人们可能会认为它运行在 BIOS 之上!我认为除了那篇文章之外,没有其他人以这种方式定义 BIOS 或以这种方式使用术语 BIOS!

    这是您链接到的文章中的一个非常误导性的奇怪段落

    一个常见的误解是 UEFI 是 BIOS 的替代品。实际上,传统主板和基于 UEFI 的主板都带有 BIOS ROM,其中包含执行系统初始开机配置的固件,然后将一些第三方代码加载到内存并跳转到它。传统 BIOS 固件和 UEFI BIOS 固件之间的区别在于它们在哪里找到该代码,它们在跳转到它之前如何准备系统,以及它们为代码在运行时调用提供了哪些便利功能。

    所以它似乎指的是 BIOS 或 UEFI 的初始部分,它们共享为 BIOS,如前所述。这是非常非常规的术语,没有其他来源这样做。

    有时,当人们查看他们用这个/那个词指代的实际功能时,他们可能对术语有点草率,尽管这篇文章在其奇怪的用法上相当教条。

    UEFI取代BIOS不是“误会”,是事实。

    而且 UEFI BIOS 一词确实不清楚,最好避免使用。

    顺便说一下,存储 UEFI 的闪存是 EEPROM 存储器,也就是 ROM 存储器。它比不是 EEPROM 的旧 ROM 存储器更容易写入。(某些来源,在某种程度上,甚至是维基百科关于 BIOS 的文章,听起来像是闪存与 ROM 存储器不同

    关于 osdev.org 文章中使用的 BIOS 和 UEFI 的奇怪用法可能不值得考虑太多。但是在与一些操作系统开发人员交谈后,许多人更多地关注 UEFI 和 BIOS 是为了他们提供的 API.. 而不是幕后发生的事情,毫无疑问,操作系统开发人员往往更关心操作系统的开发而不是BIOS 和 UEFI 的技术细节。

    为证明该文章中 CPU 在 UEFI 之前运行某些固件的建议的一种尝试是声称“CPU 以 16 位模式启动。UEFI 以 32 位或 64 位运行。所以必须先到达那里。” (他们可能会在 BIOS 的那篇维基百科文章的第一段中说它是 - 首先运行的 BIOS)。但这种说法可以被证明是错误的。可以指向从 16 位开始的 UEFI。

    您链接到的文章试图暗示在 UEFI 之前有一部分......没有。就连最开始的16bit部分也是UEFI的一部分。与我交谈过的一个技术人员知道很多,他指出我https://github.com/tianocore/edk2/tree/master/UefiCpuPkg/ResetVector/Vtf0 作为证据,并说那是来自 EFI 代码库的代码很早的引导过程仍然是 16 位部分。我敢肯定他是对的,因为这与术语的任何正常(正确!)使用一致!

    从技术上讲,一些 UEFI 规范被纳入了称为 UEFI-PI 规范或 PI 规范的规范,但 UEFI 规范的任何实现都实现了 PI 规范。https://www.insyde.com/press_news/blog/uefi-pi-13-review-part-1-i2c-bus-protocol PI 规范包含 UEFI 的所有阶段https://github.com/ tianocore/tianocore.github.io/wiki/PI-Boot-Flow。当人们提到 UEFI 时,他们往往会包括 UEFI 规范和 PI 规范中的任何内容。

    BIOS 或 UEFI 从称为“重置向量”的内存部分开始。

    UEFI(到目前为止)支持传统 BIOS 模式

    UEFI 能够模拟固件曾经像 EFI 之前的样子,即在“传统 BIOS”时代。为了不在普通 UEFI 上运行的操作系统。这是一种模式..它被称为带有CSM(兼容性支持模块)的UEFI。当 UEFI 使用该模式模拟旧版 BIOS 时。

    这种模式可能会在某个时候被淘汰,例如到 2020 年。https ://arstechnica.com/gadgets/2017/11/intel-to-kill-off-the-last-vestiges-of-the-ancient-pc-bios -到2020年/

    所以现在回答你的问题引用你的话

    此页面:https ://wiki.osdev.org/UEFI和其他一些相当值得信赖的页面

    “可信”是指“权威”,而该页面并不是那么权威,因为操作系统开发人员通常不太关心 UEFI 和 BIOS 的细节,除了他们提供操作系统的 API。他们的兴趣在于操作系统开发。

    [那个页面] 提到 UEFI 是一种在 BIOS(传统 BIOS)上运行的应用程序

    根据该页面使用的术语,是的,尽管在该上下文中它可能不会将 BIOS 称为旧版。

    该页面通常使用术语 BIOS。因此它引用了 UEFI BIOS。

    它使用术语 BIOS(不是 UEFI)来表示在开始时运行的固件方面,现在与那时相同。(不同的术语会考虑 UEFI 的那部分)。我不会太当真。

    UEFI 是固件。与旧版 BIOS 一样。

    [UEFI is] 不是固件如果我没记错的话。

    不。

    旧版 BIOS 是/曾经是固件。但是十多年来一直没有使用过。

    UEFI 是一个固件。

    两者都是。

    其他一些人声称它们只是一起运行(BIOS + UEFI)。

    不.. BIOS 是通用术语(即不是专门的旧版 BIOS)的术语。UEFI 是特定的。

    并且在 UEFI 中有“传统 BIOS 模式”。(注意“模式”一词。Legacy BIOS 与 Legacy BIOS 模式不同)。传统 BIOS(没有模式一词)是 BIOS 而不是 UEFI。

    这不是关于错误地将 UEFI 称为“UEFI BIOS”(这是另一回事,不是我的问题)。

    那是那篇文章中使用的术语并且有一些基础,例如关于 BIOS 的维基百科文章在一般意义上使用术语 BIOS,尽管它说 UEFI 是 BIOS 的继承者。但是 UEFI 一词并不能及时追溯到几年前。而该维基百科文章中给出的 BIOS 定义可以及时向后或向前投影,因为它在那里被定义为在计算机启动时运行的固件(这意味着 CPU 启动时)。因此,按照这种逻辑,可以说是 UEFI BIOS。尽管,正如同一个 BIOS 维基百科页面所说,UEFI 是“继承者”。

    但是,如前所述,没有必要使用术语“UEFI BIOS”。这不是一个非常明确的术语。也许 UEFI BIOS 一词有时被用来向人们表明 UEFI 所做的事情。并且因为他们觉得 BIOS 这个词是如此根深蒂固。您可以说“主板固件”作为一个通用术语。

    无论是布线/电子设备还是固件,让 CPU 进入重置向量的都不是 BIOS 或 UEFI。https://stackoverflow.com/questions/22312428/what-memory-is-used-for-storing-the-reset-vector

    但据我所知,BIOS 和 UEFI 是固件接口,是彼此的替代品。BIOS 是传统的,而 UEFI 是更先进的现代替代品。

    是的,这是正常的术语

    (固件,不是固件接口!)。

    他们为操作系统提供接口/API。

    那么现实是怎样的呢?

    那.. ^ 我所做的研究表明,提问者帖子中的链接文章确实是错误的。UEFI 确实取代了 BIOS。计算机运行 UEFI,或者如果它很旧,则运行 BIOS。有时口语化的术语 BIOS 用于配置屏幕,但它是 UEFI 的一部分,技术人员经常会跳进来纠正并说 UEFI 而不是 BIOS。有些人可能会使用术语 BIOS 来表示引导加载程序之前由 CPU 运行的任何东西,即使它是 UEFI,但这是一种口语化的说法,有点不确定,当它是 UEFI 时最好说 UEFI。并且像那篇文章那样说运行 UEFI 的计算机也可以使用 BIOS 运行和启动,这是完全错误的。那篇文章的作者可能没有意识到 UEFI 甚至包括在非常接近引导开始时运行的 16 位部分。

    • 3
  2. Craig
    2019-06-19T13:29:59+08:002019-06-19T13:29:59+08:00

    我不是专家,但我经常和他们一起工作。据我了解,与更现代的 UEFI 相比,老式 BIOS 是一个完全不同的环境,UEFI 不需要任何底层 BIOS 即可运行。可以说这是一站式商店。从本质上讲,它比传统的 Legacy 系统使用更多的板载内存来支持花哨的 GUI,并且还具有许多功能,通过使用并行启动技术和恢复工具来加快启动时间一块砖砌的主板即使不简单也更平滑,仅举几个好处。但是 TLDR 版本,不,UEFI 不在旧的遗留 BIOS 之上运行。

    • 1
  3. Vomit IT - Chunky Mess Style
    2019-06-19T16:45:11+08:002019-06-19T16:45:11+08:00

    是的,UEFI 旨在取代其旧版 BIOS 对应物。您只需要了解一些事情即可确认这一点。我列出了一些要点以及相关事实的参考和片段。

    1. UEFI到底是什么
    2. UEFI 发展的驱动因素

    1.UEFI到底是什么

    UEFI 是由 Intel 开发和发布的计算机固件。与大多数 BIOS 固件不同,UEFI 固件可以在不属于IBM PC 兼容类的系统上找到。

    注意:配备 UEFI 的较新 PC 仍将其称为“BIOS”,以避免混淆习惯了传统 PC BIOS 的人。即使您的 PC 使用术语“BIOS”,您今天购买的现代 PC 几乎肯定会附带 UEFI 固件而不是 BIOS。

    资源

    可扩展固件

    UEFI 是固件的扩展,如 BIOS,但(1)它可以从磁盘分区的条目中读取,不仅可以从磁盘引导,还可以(2)从特定磁盘上特定位置的特定引导加载程序引导。

    UEFI 执行的引导加载程序兼容性

    UEFI 规范定义了可执行格式,要求所有 UEFI 固件都能够执行该格式的代码。当为本机 UEFI 编写引导加载程序时,它就是以这种格式编写的。

    向后兼容

    为了向后兼容,大多数 UEFI 固件可以像 BIOS 固件一样引导系统并查找 MBR 并从那里运行引导加载程序。根据固件,这可能称为BIOS 传统模式、BIOS 兼容模式或其他类似术语。

    注意: UEFI 旨在取代基本输入/输出系统 (BIOS) 固件接口,存在于所有与 IBM PC 兼容的个人计算机中。实际上,大多数 UEFI 映像都提供对 BIOS 服务的传统支持。

    资源


    2. UEFI演进的驱动因素

    注意: 这里有一些资源可以帮助澄清和确认主要计算机制造商共同同意将哪些内容作为他们帮助影响的市场份额的行业标准使用和开发。

    我认为,当大多数主要计算机制造商都同意使用下一代技术来替代过时且不足的技术,这些技术无法跟上技术变化和改进时的配置需求,那么“假设”是安全的“ BIOS 是遗留的,是一种过时的技术,无需大量额外的研究和分析。

    1. 我鼓励您从头到尾阅读Clarifying the Ten Most Common Misconceptions about UEFI文档,因为它涉及许多可能也有帮助的澄清事实。

      统一可扩展固件接口 (UEFI) 论坛是世界级的非营利性行业标准机构,通过合作促进平台技术的发展。该论坛通过行业合作和倡导标准化接口来支持固件创新,以简化和保护平台初始化和固件引导操作。UEFI 规范由来自 250 多家行业领先技术公司的代表制定和支持,可提高业务和技术效率,提高性能和安全性,促进设备、平台和系统之间的互操作性,并符合下一代技术。

      资源

    2. 这是微软在一篇文章中对 UEFI 的看法,也将 BIOS 称为“传统”...

      当设备启动时,固件接口控制 PC 的启动过程,然后将控制权交给 Windows 或其他操作系统。UEFI 替代了旧的 BIOS 固件接口和可扩展固件接口 (EFI) 1.10 规范。超过 140 家领先的技术公司参加了统一 EFI 论坛,包括 AMD、AMI、Apple、Dell、HP、IBM、Insyde、Intel、Lenovo、Microsoft 和 Phoenix Technologies。

      资源

    3. 我认为在某些情况下认识到这些要点也很重要

      • 统一可扩展固件接口论坛或 UEFI 论坛是几家领先技术公司之间的联盟,旨在使引导过程现代化。董事会包括来自 13 家“Promoter”公司的代表:AMD、American Megatrends、ARM、Apple、Dell、Hewlett Packard Enterprise、HP Inc.、IBM、Insyde Software、Intel、Lenovo、Microsoft 和 Phoenix Technologies。

        资源

      • 统一可扩展固件接口 (UEFI ) 是定义操作系统和平台固件之间的软件接口的规范。UEFI 取代了最初存在于所有 IBM PC 兼容个人计算机中的基本输入/输出系统 (BIOS) 固件接口,[1][2] 大多数 UEFI 固件实现为 BIOS 服务提供传统支持。UEFI 可以支持远程诊断和修复计算机,即使没有安装操作系统。

        资源

    • 1
  4. LawrenceC
    2019-06-19T14:13:56+08:002019-06-19T14:13:56+08:00

    不可以。UEFI 是 BIOS 的替代品。

    有一个 CSM - 兼容性支持模块这样的东西。这是一个 UEFI 模块,它模拟 BIOS 以引导仅适用于 BIOS 的操作系统。这是 UEFI 的可选部分。

    BIOS 和 UEFI 非常不同,带有引导 ROM 的外围设备(例如视频卡和 RAID 卡)需要 BIOS 或 UEFI 特定固件才能在引导时使用。如果启用 CSM,则可以使用仅适用于 BIOS 的固件。


    主板带有 ROM 设备,通常是 SPI 闪存 ROM。这包含任何系统固件,无论它是否仅支持 BIOS 接口和功能、UEFI 接口和功能,或两者。我相信这是什么意思

    “实际上,传统主板和基于 UEFI 的主板都带有 BIOS ROM,其中包含执行系统初始开机配置的固件,然后将一些第三方代码加载到内存并跳转到它”

    来自上面引用的 OSDev wiki 链接。

    老实说,虽然我真的不明白它想说什么。这似乎是在迂回地说 BIOS 和 UEFI 执行相同的整体功能。

    固件开发人员很可能已经或正在使用他们当时的大多数现有 BIOS 固件代码,并在其周围添加更多代码以使其与 UEFI 兼容。这也使得实施/支持 CSM 以引导非 UEFI 操作系统变得更加容易。

    UEFI标准绝对是为了取代BIOS“标准”——这里的“标准”是用引号引起来的,因为它是公司(从 Compaq 开始)逆向工程和复制 IBM 原始 5150 PC 后出现的“事实上的标准” 1981 年发布。UEFI 是一个实际的标准,您可以从 uefi.org 下载规范。

    2020 年英特尔不再支持 BIOS,将仅提供 UEFI 的代码和资源。

    • 0
  5. test2L
    2020-10-22T03:37:01+08:002020-10-22T03:37:01+08:00

    @barlop 所以 UEFI 有 2 个组件 - 一个位于最初运行的 EEPROM 中的 16 位部分,然后是位于硬盘上的更大的 .EFI 文件?那正确吗?

    • -1

相关问题

  • 无法在 Aspire One D255 上通过 FreeDOS 更新 BIOS:致命错误 (1307) 内存不足

  • 如何从 Raspbian 中为非 UEFI 系统制作 Ubuntu LiveUSB?

  • 如何使用 Alienware Aurora R7 从 USB 闪存驱动器启动?

  • 我的 BIOS 坏了

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve