UEFI或Legacy?哪个更建议使用,为什么?

虽然我对UEFI和Legacy有一些了解,并知道它们之间的基本区别,比如UEFI可以实现更快的启动(已经查看了此问题的链接1,但没有回答我的问题),但我有一个稍微不同的问题:

我不确定BIOS设置是否会影响系统的工作方式,以及遗留设置是否可能导致硬件出现问题,但我通常在遗留模式下安装我的Linux系统,并将引导优先级设置为遗留模式。这样做可以吗?或者我应该将引导优先级首先设置为UEFI,或者全部调整为UEFI(这台Lenovo G50-45笔记本电脑预装有Windows 8)。

此外,我的笔记本电脑上有很多东西无法正常工作,而在Windows上一切正常,我不确定问题出在哪里。我只记得,在遗留模式下,Windows无法安装,我必须将引导优先级更改为UEFI才能安装它(Win 7 Ultimate x64)。

目前在*ubuntu(任何变体)15.04上,我的麦克风无法工作(声音失真,非常微弱),并且Xorg会在使用Libreoffice时导致整个会话崩溃,这在k3.19+版本上测试过多个发行版。

所以,总结一下,对于一个运行无缺陷的系统,我们推荐使用哪种?是传统Legacy模式还是UEFI模式?(在系统功能方面是否有区别)

1当你说遗留时,它不是 grub-legacy,而是遗留引导或 CSM(兼容性支持模块),它模拟了 BIOS 模式。你可以在 GPT 分区的驱动器上以 CSM 模式启动。自从 Ubuntu 10.10 以来,我一直在旧的 BIOS 系统上使用 GPT。对于非常新的系统,驱动程序一直都是一个问题,除非供应商改变并开始直接支持 Linux。Linux 开发人员必须逆向工程所有驱动程序,这需要一段时间才能在当前发行版中实现。UEFI 也是相对较新的技术,供应商也需要进行大量开发。 - oldfred
我觉得这就像是AMD和Intel的比较,它们都能工作并且有着相同的目的,但却来自不同的供应商。当然,每个产品都有自己独特的特点和问题,最终选择取决于你自己。 - deFreitas
3个回答

对于大多数硬件来说,引导模式(EFI vs. BIOS)是无关紧要的。Linux加载的驱动程序在两种情况下都是相同的,性能应该也是一样的。这里的主要注意事项是,根据引导模式的不同,硬件可能会以不同的方式初始化,如果Linux驱动程序对硬件的初始化做出了假设,其中一种方式可能效果更好。过去,这种问题有时会使得启动一种或另一种模式(通常是BIOS模式)更可取,但这种类型的问题在今天变得相当罕见。这种问题主要影响视频硬件和驱动程序,但原则上它可能影响任何硬件。
在你的特定情况下,我怀疑你拥有的是在Linux上支持较差的"最新"硬件,或者可能需要特殊配置才能正确工作的硬件。你最好是针对每个不能满足你要求的具体设备单独提问。你还可以使用BIOS模式和EFI模式进行测试,以确定实际上哪种模式更适合你,因为没有办法准确地概括哪种模式是最好的。
关于哪种模式最好的正确答案是:“这取决于情况。”例如:
  • 如果您正在使用已经安装在某种模式下的操作系统进行双启动,最好将Ubuntu(或任何其他Linux)以与已使用的模式相同的引导模式启动。
  • 使用BIOS/CSM/legacy模式几乎总是会使引导过程变得复杂,详细描述在我的网页上。结果是,启用BIOS模式引导会增加问题出现的可能性,尤其是如果您已经安装了EFI模式的操作系统。
  • 对于单一操作系统系统,对BIOS模式引导过程的了解更为广泛,这可以解决前面提到的问题。
  • 正如我所描述的,一些硬件初始化问题可能会偏向于某种引导模式(通常BIOS模式更容易使其工作)。不过,这类问题似乎在频率上有所减少。
  • EFI模式引导通常比BIOS模式引导快一点,尽管具体细节因操作系统而异。
  • 您的引导加载程序选择略有不同。如果您超越默认的GRUB,您可能更喜欢只在一种引导模式下可用的某个选项。目前,这往往有利于EFI,因为有一些仅适用于EFI的引导管理器(gummiboot、rEFIt和rEFInd),而没有BIOS的对应物;但据我所知,Linux中唯一没有EFI版本或类似版本的BIOS特定引导程序是BURG和LOADLIN,而且它们都已经(据我所知)被放弃了。
  • 安全启动(UEFI特有功能)可以帮助您控制引导过程,防止未经授权的代码运行。如果您愿意付出努力,甚至可以使用安全启动来阻止Windows在您的计算机上运行。
  • 在某些计算机上,以BIOS模式引导时,GPT会出现问题;但GPT是EFI的标准。GPT在小于2TiB的磁盘上提供了一些微小的优势,但在大于该容量的磁盘上是必需的。(假设逻辑扇区大小为512字节;但较大的逻辑扇区在以BIOS模式引导时存在问题,并且在内部磁盘上非常罕见。)
如果你需要一个更具体的关于应该使用哪个“BIOS”或“EFI”的答案,你需要提供关于你的设置的更多具体信息。

谢谢,这比之前的帖子更加清晰,虽然两者都非常有帮助。目前这是一个单一操作系统系统。 - SNH
我已经发布了关于我关心的问题的错误报告。一个在这里 https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1473435,另一个在这里讨论 http://ubuntuforums.org/showthread.php?t=2285503。 - SNH
很棒的信息(而且很多)。我也读了你网页上的很多内容。如果我理解正确,总结起来就是:“除非有迫切需要,否则建议使用UEFI,这样会减少问题,并且如果出现问题,更容易适应。” 你提到可能需要切换的问题之一是显卡。我将在一台新电脑上安装Ubuntu,配备Nvidia显卡(如果有影响的话,是gtx 970),这个例外只适用于旧显卡吗?或者,由于我没有安装Windows以安装固件,我需要使用Legacy吗? - TrailRider
关于我上一条评论的后续问题(也许应该单独提问),如果UEFI被推荐使用,因为这台计算机很可能只运行Linux(如果出于某种原因需要双系统,Windows将安装在自己的硬盘上),那么我应该保持启用安全启动还是禁用它?根据我从您的页面上了解到的信息,我认为您建议保持启用状态,但是页面内容如此丰富,第一遍阅读很难消化。 - TrailRider
我不知道有没有一个可靠与不可靠的视频卡数据库,无论是在BIOS还是EFI模式下,所以我不能对你的视频卡选择发表评论。你只能自己尝试并解决任何问题,按照你认为最好的方式进行。至于在仅运行Linux系统的情况下,我个人会使用EFI,除非我知道计算机存在某些特定问题;但对于仅用于Linux的系统来说,这真的不太可能产生很大的影响。Secure Boot 应该可以在Ubuntu上正常工作,并可能提供一些小的安全性好处,所以除非它引起问题,否则我会将其保持启用状态。 - Rod Smith

            Do you need to boot from a
----------- partition more than 2 TiB in size?
|                       |
no                      yes
|                       |
|                       |
|               Do you REALLY need to boot from a
|               partition more than 2 TiB in size?
|   ------------        |
|   |                   yes
|   no                  |
|   |                   |
|----           Find a different solution!
|                       |
|------------------------
|   
Don't use UEFI.

我表达清楚了吗?
除非你想引导Windows,或者你想从大于2 TiB的分区引导,否则没有理由使用UEFI。而且你总是可以找到解决方案来解决后者。
UEFI带来了很多不利之处,没有任何优势。不要使用它。
基本上,你正在把对自己电脑的控制权交给了公司。不要这样做,这是个坏主意。
你还会遇到使用某些工具时的问题,这些工具无法处理GPT(从BIOS到UEFI唯一的改进就是支持GPT,其他都是缺点,而且有很多)。如果你在外部或次要硬盘驱动器上使用GPT,这并不是太大的问题,但不要从中引导。
如果您没有大于2 TiB的硬盘用于引导,那么一开始就没有问题。如果您有一个大于2 TiB的硬盘用于引导,但不需要有大于2 TiB的分区,并且不需要在第一个2 TiB之后有分区的“开头”,那么您也不需要GPT,因此也不需要UEFI。(因此,拥有一个4 TiB的硬盘,其中一些分区位于开头,最后2 TiB填充了1个2 TiB是可以的,而且不需要GPT。)
如上所述:这只涉及您引导的硬盘。如果您有一个用于引导的SSD(当然不能太大,因为这样大的SSD不存在),并且只想使用GPT进行数据存储,那么一切都很好,您不需要UEFI来访问它们。
硬件支持通常需要硬件固件和操作系统驱动程序的形式来解决的问题,并没有通过UEFI解决。虽然它本应该可以解决,但实际上并没有。UEFI简直糟糕透了。

9这是“GPT”,而不是“GTP”。目前为止,GPT得到了很好的支持。是的,一些工具不支持它,但总体来说,这只是一个小问题;而且GPT在超过2TiB的支持之外,还提供了一些(虽然是小的)优势,详细信息请参考这里。关于将计算机控制权交给公司的说法是没有依据且不正确的。使用MBR来处理超过2TiB的磁盘的解决方法是一种危险的黑客行为。这个答案没有详细说明EFI存在的任何问题,除了不被支持的坏处的主张。 - Rod Smith
1@RodSmith 哈哈,事情变得真他妈的真实!你猜怎么着!我居然还挺高兴的!如果你不知道我在说什么:Hacking Team 刚刚公开了他们使用 UEFI 来在操作系统重新安装后继续感染系统的事实。这比硬盘驱动器固件那种情况还要极端,因为在那种情况下,你只需要扔掉硬盘,买一个新的,安装操作系统,就可以重新运行了。而这个 UEFI 的东西,你得扔掉整个主板,这可比一个硬盘驱动器贵多了。 - UTF-8
4你所提到的黑客攻击基本上是重新编写修改过的固件版本。这也可以通过BIOS来完成。而且,从实际角度来看,将使用EFI的现代计算机以BIOS模式启动对于防止此类攻击几乎没有任何作用。 - Rod Smith
3存储芯片被BIOS或UEFI占用的空间越大,存储芯片本身就需要越大,存储恶意软件的机会也就越多。而UEFI非常庞大,真的是非常非常庞大。它比Linux内核还要大。理论上说,BIOS可能存在恶意软件,甚至有人声称已经开发出来了,但从未展示过。我们目前已经发现了几起利用UEFI将恶意软件注入系统或靠近硬件的事件,甚至在UEFI中发现了恶意软件。此外,UEFI还执行一些毫无意义且可能引发问题的操作。例如,时间必须准确设置。 - UTF-8
1当地时间。这个问题在一台机器上有多个操作系统时尤为突出,尤其是当你的国家转换到夏令时或发生闰秒的时候,或者你在一个国家购买硬件然后进口到另一个国家时。或者当你从一个时区旅行到另一个时区时。如果一个操作系统已经设置成新的时区,而另一个操作系统没有,当一个系统在有互联网的情况下更改时间,然后切换到另一个系统时,没有互联网,所以另一个系统对此一无所知。这很混乱和不必要地复杂,也就意味着会引起问题。 - UTF-8
2事实上,BIOS替换恶意软件已经存在。例如,请参阅http://blog.trendmicro.com/badbios-sometimes-bad-really-bad/。EFI规范确实要求时间显示为本地时间,但在实际操作中,这并不重要。如果你愿意,可以继续发泄;我将不再回应。 - Rod Smith
5UEFI比BIOS好得多,即使您没有大于2TB的磁盘。引导过程是64位而不是16位,这使得UEFI更快。此外,安全启动可以防止引导工具恶意软件。硬件诊断也可以非常有用,而不是蜂鸣代码。GPT分区表中还有更多新功能,以防止数据损坏。如果我的计算机支持UEFI,我不会切换到BIOS(我正在一台UEFI PC上写这篇文章)。 - Suici Doga
我从来没有注意到任何一瞬间变得更少。嗯,谢谢!这是一个节省时间的绝佳方式。安全启动永远不会保护你免受任何威胁。它在根本上存在缺陷,任何尝试都无法成功。尤其是目前这种糟糕的方式。我更希望有一种通过硬件禁用更改BIOS的方法。UEFI使情况变得更糟,因为操作系统可能会意外更改其中的内容。特别是如果你使用三星笔记本电脑(他们没有正确实现UEFI)。GPT目前存在太多的缺点(但将来会更好地运作)。 - UTF-8
2@Rod Smith:“你关于将计算机控制权交给公司的说法是没有依据且不正确的。” 是吗?https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Secure_boot_criticism - Ola Tuvesson
2@OlaTuvesson 感谢你指出这一点。然而,这些事件发生在2011年至2013年期间。我在2015年写下了我的回答,Rod Smith也在2015年批评了我的回答。当时已经知道UEFI不仅有可能损害自由软件,而且已经在阻碍它的发展。 - UTF-8
1我完全同意这个回答中的所有内容!UEFI = 垃圾。 - You'reAGitForNotUsingGit
1我完全同意这个答案。 - Overmind

至少有一个很好的理由安装Linux在UEFI上。 如果您想要升级Linux计算机的固件,在许多情况下都需要UEFI。
例如,Gnome软件管理器中集成的“自动”固件升级功能需要UEFI。 没有UEFI意味着通过LVFS/fwupd/fwupdmgr进行固件升级将不起作用。这在大多数情况下意味着Linux上没有固件升级。