硬核观察 #785 Linux 之父的 PC 挂了，恐影响 Linux 6.1 发布
Linux 之父的 PC 挂了，恐影响 Linux 6.1 发布两年前我们 报道 过，Linus Torvalds 攒了一台新电脑，一晃两年半过去了，如今，这台电脑的内存条坏了，频繁出现机器不稳定甚至编译器损坏的情况。当时，Torvalds 本来想买 ECC 内存，但是又嫌太贵，于是买了 4 条便宜的 16GB DDR4-2666 的内存。目前，Torvalds 使用他外出携带的 MacBook Pro 工作，但是拖慢了他的工作进度。他说，“我正在我的笔记本电脑上进行合并（非常缓慢），同时在等待新的 ECC 内存条的到来。”。消息来源：The Register老王点评：谁能想到，整个 Linux 世界的进步瓶颈就卡在几条内存上。?龙架构已初步支持开源鸿蒙操作系统龙芯中科宣布，开源鸿蒙（OpenHarmony）操作系统与龙芯 2K0500 开发板完成适配验证，龙架构（LoongArch）平台对于开源鸿蒙已形成初步支持。龙芯 2K0500 是基于 64 位 LA264 处理器核设计的高集成度处理器芯片，该芯片主要面向工控互联网应用、打印终端、BMC 等应用场景。消息来源：龙芯中科老王点评：这对于龙芯和鸿蒙都是一小步，但是或许会带来更多想象空间。英特尔确认 Alder Lake BIOS 源代码被泄露英特尔 Alder Lake BIOS 源代码被泄露到 4chan 和 Github，这个 6GB 的文件包含用于构建和优化 BIOS/UEFI 镜像的工具和代码。但英特尔“不认为这暴露了任何新的安全漏洞”，英特尔称，“这段代码属于我们的‘断路器项目’中的漏洞赏金计划，我们鼓励任何可能发现潜在漏洞的研究人员通过该计划告知我们。”消息来源：Tom's Hardware老王点评：这件事或许没有英特尔说的那么轻描淡写，如果真的无关紧要，何不开源呢？
Doom 游戏被移植到 BIOS 中运行Coreboot 是一个自由开源的 BIOS 实现，支持许多被称为“载荷”的扩展。用户可以通过选择不同载荷来自定义 BIOS ROM 所包含的功能。在刚刚发布的 Coreboot 4.17 中，除了支持新的主板、提供新的启动程序、支持 AMD 平台安全启动、有一些修正之外，还有……一个 1993 年的移植版 Doom（毁灭战士）游戏。虽然有些“小小”的不足，比如没有声音、不能保存游戏、退出游戏时系统会挂起，但是他们说，“如果你厌倦了太空入侵者和俄罗斯方块等游戏载荷，将 3D 游戏带入你的 BIOS，是一个很棒的新选择！”消息来源：Phoronix老王点评：嗯，我启动机器是准备干什么来着？为什么我一直玩游戏……UNISOC 固件中的一个关键缺陷可阻断通讯研究人员发现，攻击者可以向附近带有 UNISOC 固件的设备发射一个特别设计的无线电数据包，可以使固件崩溃，在设备重新启动之前，会终止该设备的蜂窝网络连接。事实证明，这个缺陷不仅适用于低端智能手机，而且也适用于一些智能电视。研究人员说该漏洞是在 UNISOC 芯片组的固件中，而不是在安卓操作系统中。UNISOC 是一家有 21 年历史的芯片设计公司，总部设在中国，是世界上第四大智能手机芯片商，仅次于联发科、高通和苹果。消息来源：The Register老王点评：最糟糕的就是这种硬件中的安全缺陷，无论是升级还是替换，都非常麻烦。谷歌助手正在失去基于位置的提醒这些是非常有用的命令，你可以告诉谷歌助手，比如，“提醒我回家后把垃圾倒掉”，而你的手机一直在追踪你的位置，当你进门时就会提示你。现在谷歌正在发出通知，告诉用户这项功能已经失效，而建议采用定时重复的提醒替代。目前还不清楚为什么谷歌突然要砍掉一个有用的、易于使用的功能。消息来源：Arstechnica老王点评：看来不是好的功能都能留下，有时候你不知道厂商在想什么，如果产品是开源的会怎么样？
硬核观察 #598 谷歌禁止韩国应用采用第三方支付链接
谷歌禁止韩国应用采用第三方支付链接据消息，韩国通信委员会已经确定，谷歌没有遵守该国的法律，这是世界上第一部要求应用商店的运营商允许第三方支付的法律。该法律于 2021 年 9 月生效，谷歌很快同意遵守法律，而苹果在考虑了几周后也加入了这一行列。但谷歌继续通过谷歌商店进行所有交易，并对所有交易收取费用，即使用户选择第三方支付供应商。韩国开发者在应用中没有使用第三方支付系统，而是嵌入了第三方支付链接，以逃避谷歌施加的所有费用。谷歌认为这种链接不符合其支付政策，阻止了这些应用的更新，并计划从 6 月 1 日起从其商店删除这些应用。老王点评：这就是店大欺客啊，让我们拭目以待谁会胜利。IBM 发布了最新的大型机 z16据消息，它运行在该公司去年夏天发布 IBM Telum 处理器上。IBM 称，该芯片已被优化以运行大规模的工作负载，每天可处理 3000 亿次高价值的金融交易，而延迟仅为 1 毫秒。根据 IBM 提供的数据，财富 100 强中的三分之二，世界前 50 家银行中的 45 家，前 10 家保险公司中的 8 家，全球前 10 家零售商中的 7 家和前 10 家电信公司中的 8 家，它们都在使用大型机，这些机器大部分来自于 IBM。老王点评：虽然大型机似乎已经是故纸堆中的历史文物，但是它依然在非常重要的场所发挥不可取代的作用。Fedora 开发团队正考虑放弃对非 UEFI BIOS 的支持据消息，为推进弃用旧版 BIOS、并让 UEFI 成为 x86\_64 系统的一个硬性要求，Fedora 开发团队正考虑让今年晚些时候发布的 Fedora 37 放弃对非 UEFI BIOS 的支持。不过使用旧版 BIOS 的用户，仍可通过更新的方式将之前的 Fedora 升级到 Fedora 37。与此同时，Fedora 也在逐步淘汰 32 位 x86 操作系统，并将最低系统要求改成了 2006 年前后的硬件。所以除了在硬件上禁用了 UEFI 支持的一小部分用户，这项新变化应该不会影响到太多人。老王点评：我总觉得 Fedora 的这种趋势，颇有微软 Windows 11 的风格。
硬核观察 #543 去年全球最大盗版网站访问量来源为美国
去年全球最大盗版网站访问量来源为美国Akamai 最新的《互联网安全状况》研究报告显示，盗版网站的访问量在 2021 年 1 月至 9 月期间总计达 1320 亿次；其中 61.5% 会直接通过访问盗版资源网站来获取资源，而 28.6% 的人群则为主动搜寻盗版内容。全球前 5 大盗版网站访问量来源分别为美国（135 亿）、俄国（72 亿）、印度（65 亿）、中国（59 亿）和巴西（45 亿） 。老王点评：美国总是指责中国的知识产权问题，不如先查查自己。苹果正在开发新操作系统 realityOS苹果正在开发一个 混合现实平台，已经开发了数年，团队成员多达数千人。苹果混合现实平台经历了多次延期，据报道曾计划在 2019 年发布混合现实设备，目前还不知道苹果何时发布运行 realityOS 的设备，也许是今年，也许是明年。老王点评：说实话，现在的 VR/AR 设备还比较原始，或许苹果准备推出一个完全不同的产品来，才不断延期。英特尔发现 16 个 BIOS 新漏洞英特尔发布了一份 新的安全公告，其中包含了 16 个与 BIOS 相关的新漏洞。攻击者可以利用这些漏洞，在本地主机上使用拒绝服务和特权升级进行攻击，而且可以绕过操作系统和其相关的安全措施。其中有 10 个漏洞的严重程度被评为“高”，这意味着允许不受限制地访问。不过这些漏洞只能在本地有物理访问权的情况下才能被利用，不能用于远程攻击。老王点评：由于大部分情况下 BIOS 漏洞不能远程利用，所以很多人对 BIOS 漏洞是不在意的。
黑莓设备即将彻底落幕黑莓公司称，它将在 2022 年 1 月 4 日结束对黑莓操作系统和黑莓平板操作系统的遗留服务支持。这意味着，如果你有一部运行黑莓 10 、黑莓 7.1 或更早的手机，那么从该日起，电话、短信、WiFi 和移动数据这些功能将变得不再可靠，各种黑莓应用也将功能受限。黑莓平板电脑也将处于报废状态，虽然它在推出一年后就停产了。老王点评：黑莓算是正式落幕了，可能确实也没多少用户了吧。glibc 仍然没有默认解决 2038 年问题所谓的 2038 年问题是指类 Unix 系统使用 32 位整数记录时间，从 1970 年 1 月 1 日开始计算秒数，到 2038 年 1 月 19 日 3 时 14 分 07 秒将溢出，会导致使用这种时间的程序崩溃。而在 64 位系统上使用的是 64 位整数记录时间，Linux 内核在几年前就切换到了 64 位时间记录方式解决了这个问题。然而，广泛使用的 glibc 库虽然从 2.34 就支持 64 位时间记录，但并 没有默认使用，而需要明确指明才使用。这意味着今天使用 glibc 的应用在 16 年后可能会出现问题。老王点评：虽然可能 glibc 觉得现在的应用不会在 16 年后还会原样使用，但是还是应该尽早修改默认行为比较好。英特尔提交 PFRUT 项目，升级系统固件无需重启英特尔向 Linux 内核 5.17 提交了一个新的开源项目 PFRUT，允许在操作系统中升级固件，而不需要重新启动系统。这项功能 是一个服务器专属的功能，服务器可以自由地更新系统 UEFI 或 BIOS，同时确保关键的工作负载在整个过程中保持运行。更新过程是通过操作系统完成的，而不是直接通过 UEFI 或 BIOS 完成。但目前不确定是需要特定的硬件支持还是只需要驱动就可以了。老王点评：确实是一个对服务器硬件非常需要的功能。
硬核观察 #306 国产的全功能 Linux 平板电脑 JingPad A1 众筹成功
国产的全功能 Linux 平板电脑 JingPad A1 众筹成功对于动手能力强的个人用户来说，确实可以尝试在手机或平板电脑上安装“适当的” Linux 发行版。但当前正在 Indiegogo 上众筹的 JingPad Linux 平板，或许是一个更切实际的选择。它的众筹价格为 549 美元，首日就达成了超过五倍的众筹目标。它采用的是之前发布的国产操作系统 JingOS。虽然有着类似苹果 iPadOS 的外观，但 JingOS 的底层还是基于开源的 Linux 桌面。得益于成熟的 Linux 桌面，用户能够轻松体验 LibreOffice、GIMP 等常用软件，以及流行的开发者 / 系统管理工具。看起来不错，但是感觉价格并不便宜，希望我们可以尽早做个测评分享给大家。OpenSSL 3.0 候选版本发布经过了十几个 alpha 版本后，OpenSSL 3.0 今天发布了候选版本，它将在下季度发布正式版本。新的版本号跳过了 2.x，直接从 1.1.x 到了 3.0。OpenSSL 3.0 已经迁移到一个基于提供者的架构，以允许更大的灵活性。完全可插拔的 TLSv1.3组，新的编码器和解码器支持，完整的证书管理协议（CMP）实现，新的 API，以及对内核 TLS 的集成支持是 OpenSSL 3.0 的许多大变化之一。另外 OpenSSL 3.0 现在是在 Apache 2.0 许可证下授权的，而之前是采用 “OpenSSL 许可证”和 “Original SSLeay 许可证”双许可证授权的。在得到更多的关注和支持之后，OpenSSL 开始奋起直追，从公布的特性看，应该值得这个大版本跳跃。联想 ThinkPad 发布驱动支持在 Linux 设置 BIOS联想发布了一个新的 Think-LMI 驱动，即将进入 Linux 主线内核。该驱动允许在支持 WMI 接口的ThinkPad 及其它联想系统上查看和改变 BIOS/固件设置。支持读取/配置的 BIOS 选项通过 sysfs 的 /sys/class/firmware-attributes/* 暴露给用户空间。该驱动预计会进入 Linux 5.14。通过 sysfs 公开 BIOS 设置并不是一个全新的概念。从去年开始，戴尔率先为 Linux 开展了固件属性的工作。虽然不是开源的 BIOS 和固件，但是能在 Linux 内设置感觉是一种进步。
IBM 教会 AI 翻译编程语言IBM 的 CodeNet 旨在教人工智能如何翻译代码。它是一个庞大的数据集，包含大约 5 亿行代码，分布在 55 种以上的传统和活跃语言中 —— 从 COBOL、FORTRAN 到 Java、C++ 和 Python。这个数据集是由 4000 多个编码问题和 1400 多万个代码样本组成的，这些问题是从全球范围内几十年的编程挑战和竞赛中收集的。该数据集是以一种能够实现双向翻译的方式构建的，也就是说你可以在两种编程语言之间进行转换。除了翻译之外，CodeNet 还可以用于代码搜索、克隆检测等功能。另外，研究人员也可以将其用于运行回归研究，并有可能开发自动代码纠正系统。看看，以后编程都像工业制品一样都由机器来生产了，程序员们将来就像手工业者一样，只能从事一些体现艺术或小众领域的手工制品了。所有 Wi-Fi 设备皆存在 FragAttacks 漏洞网络安全研究人员发表了一系列 Wi-Fi 设备安全漏洞，这些漏洞被统称为 FragAttacks。其中 3 个来自 Wi-Fi 标准中的设计缺陷，从最初的安全协定 WEP 到最新的 WPA3 规范都在影响范围中，也就是说，从 1997 年 Wi-Fi 发布起，这些设计缺陷已经成为 Wi-Fi 的一部分。值得庆幸的是，这些设计缺陷比较难以被利用。不过更严重的是，还有一些漏洞是由 Wi-Fi 产品中普遍存在的程序错误引起，其中几个漏洞可轻易地被恶意攻击者利用。经证实，绝大多数 Wi-Fi 设备都存在多个漏洞。为了保护广大的用户，安全更新工作已经进行了 9 个月，现在才对外揭露漏洞信息，漏洞修补工作由 Wi-Fi 联盟和 ICASI 进行监督。无线网络在方便的同时，也给开放攻击提供了更多机会，这让我想起来之前在单位楼下破解 Wi-Fi 的故事。知名 BIOS 厂商 AMI 正在积极参与开源系统固件项目尽管 AMI 专有的 BIOS 产品已被许多主板厂商所采用，但该公司也表示有向开源计算项目社区给予回馈的意向。AMI 正致力于 Linux 基金会的 OpenBMC、EDK II 和相关开源组件。开放计算项目正在继续引起主要行业参与者的兴趣，出于安全/审计的原因，开源固件在总体上继续受到越来越多的关注，因此工程师可以按照他们认为合适的方式管理固件。虽然开源固件项目近些年来发展势头不错，也得到了英特尔的支持，但是看到一家以专有 BIOS 而知名的公司愿意参与到开源项目，可见开源已经是大势所趋。
#新闻拍一拍# 华为正式开源数据虚拟化引擎 openLooKeng
华为正式开源数据虚拟化引擎 openLooKeng2019 年 11 月 19 日，华为宣布开源数据虚拟化引擎 HetuEngine（开源版本的 HetuEngine 叫 openHetu），现在，openHetu 正式更名为 openLooKeng，HetuEngine 更名为 LooKengEngine。openLooKeng 致力于为大数据用户提供极简的数据分析体验，让用户像使用“数据库”一样使用“大数据”。openLooKeng 是一款开源的高性能数据虚拟化引擎。提供统一 SQL 接口，具备跨数据源/数据中心分析能力以及面向交互式、批、流等融合查询场景。同时增强了前置调度、跨源索引、动态过滤、跨源协同、水平拓展等能力。来源：开源中国拍一拍：去年华为承诺的一系列开源项目看来最近都有了新动作，不过我们希望这些新动作都能落到实处。阿里数学竞赛全球最强 73 人出炉7 月 2 日，第二届阿里巴巴全球数学竞赛举办颁奖典礼，经过两轮预赛、一轮决赛的角逐，来自中、美、法、德、英、俄、新加坡、格鲁吉亚等 8 个国家的 73 位选手成为最终获奖者。麻省理工学院的王东皞、普林斯顿大学的郑凡、新加坡国立大学的 Yap Jit Wu、加利福尼亚大学伯克利分校的张钺带走了 4 座金奖奖杯。来源：快科技拍一拍：似乎金奖都是中国人或华裔啊。Fedora 开发者讨论放弃支持老式 BIOS 的可能性英特尔计划在 2020 年结束终止支持老式 BIOS，并且 UEFI 在 x86\_64 系统中已经非常普遍。Fedora 开发者正在讨论现在开始逐步取消支持老式 BIOS 是否为好时机。一些使用 2012~2013 年时期硬件的用户对可能无法在他们的无 UEFI 硬件上使用新的 Fedora 版本表示失望。目前尚未提出正式的提案来终止支持老式 BIOS 并只支持 UEFI，不过 Fedora 团队已开始对该问题展开积极讨论。来源：开源中国拍一拍：感觉目前 Fedora 是最活跃积极的发行版社区了。IBM 宣布向 Linux AI 基金会贡献一系列 AI 工具包此次 IBM 一共贡献了三项工具：AI Fairness 360 工具包可帮助检测和减轻整个 AI 应用程序中机器学习模型的偏差；Adversarial Robustness 360 Toolbox（ART） 是一个 Python 库，旨在保证机器学习的安全性，使神经网络免受攻击；AI Explainability 360 工具包则提供了一套全面的算法，涵盖了解释的不同维度以及代理的可解释性指标，用以支持机器学习模型的可解释性。来源：开源中国牺牲稳定换更短发布周期，Firefox 的这步棋真的下对了吗？去年九月，Mozilla 宣布了 Firefox 浏览器的升级周期从此前的六周时间缩短至四周。这意味着用户能够更快获得稳定版本。虽然该公司确实已经成功地接受了这个四周的发布时间表，但其承诺的严格测试却不是这样的。Firefox 76/77/78 三个重要版本均出现了各种严重的问题，导致 Mozilla 被迫暂停新版本的推送，然后紧急发布维护版本更新。来源：cnBeta.COM拍一拍：追求新变化可能不是浏览器用户最关注的地方，稳定和保持性能优良才是最最重要的。
如何检查你的计算机使用的是 UEFI 还是 BIOS
简介：这是一个快速的教程，来告诉你的系统使用的是现代 UEFI 或者传统 BIOS。同时提供 Windows 和 Linux 的说明。当你尝试双启动 Linux 和 Windows 时，你需要知道系统上是否有 UEFI 或 BIOS 启动模式。它可以帮助你决定安装 Linux 的分区。我不打算在这里讨论什么是 BIOS。不过，我想通过 BIOS 告诉你一些 UEFI 的优点。UEFI 即（ 统一可扩展固件接口 Unified Extensible Firmware Interface ）旨在克服 BIOS 的某些限制。它增加了使用大于 2TB 磁盘的能力，并具有独立于 CPU 的体系结构和驱动程序。采用模块化设计，即使没有安装操作系统，也可以支持远程诊断和修复，以及灵活的无操作系统环境（包括网络功能）。UEFI 优于 BIOS 的地方UEFI 在初始化硬件时速度更快。提供安全启动，这意味着你在加载操作系统之前加载的所有内容都必须签名。这为你的系统提供了额外的保护层。BIOS 不支持超过 2TB 的分区。最重要的是，如果你是双引导，那么建议始终在相同的引导模式下安装两个操作系统。如果试图查看你的系统运行的是 UEFI 还是 BIOS，这并不难。首先让我从 Windows 开始，然后看看如何在 Linux 系统上查看用的是 UEFI 还是 BIOS。在 Windows 中检查使用的是 UEFI 还是 BIOS在 Windows 中，在“开始”面板中的“系统信息”中，在 BIOS 模式下，可以找到启动模式。如果它显示的是 Legacy，那么你的系统是 BIOS。如果显示 UEFI，那么它是 UEFI。另一个方法：如果你使用 Windows 10，可以打开文件资源管理器并进入到 C:\Windows\Panther 来查看你使用的是 UEFI 还是 BIOS。打开文件 setupact.log 并搜索下面的字符串。Detected boot environment 我建议在 notepad++ 中打开这个文件，因为这是一个很大的文件，记事本很可能挂起（至少它对我来说是 6GB ！）。你会看到几行有用的信息。2017-11-27 09:11:31, Info IBS Callback_BootEnvironmentDetect:FirmwareType 1. 2017-11-27 09:11:31, Info IBS Callback_BootEnvironmentDetect: Detected boot environment: BIOS 在 Linux 中检查使用的是 UEFI 还是 BIOS最简单地找出使用的是 UEFI 还是 BIOS 的方法是查找 /sys/firmware/efi 文件夹。如果使用的 BIOS 那么该文件夹不存在。另一种方法：安装名为 efibootmgr 的软件包。在基于 Debian 和 Ubuntu 的发行版中，你可以使用以下命令安装 efibootmgr 包：sudo apt install efibootmgr 完成后，输入以下命令：sudo efibootmgr 如果你的系统支持 UEFI，它会输出不同的变量。如果没有，你将看到一条消息指出 EFI 变量不支持。最后的话查看你的系统使用的是 UEFI 还是 BIOS 很容易。一方面，像快速和安全的引导为 UEFI 提供了优势，如果你使用的是 BIOS 也不必担心太多，除非你打算使用 2TB 硬盘。via: https://itsfoss.com/check-uefi-or-bios/作者：Ambarish Kumar 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
此页面是免费浏览的，没有烦人的外部广告；然而，我的确花了时间准备，网站托管也花了钱。如果您发现此页面帮到了您，请考虑进行小额捐款，以帮助保持网站的运行。谢谢！ 原著于 2013/10/19；最后修改于 2015/3/16引言几年来，一种新的固件技术悄然出现，而大多数普通用户对此并无所知。该技术被称为 可扩展固件接口 （ Extensible Firmware Interface ） （EFI）， 或更新一些的统一可扩展固件接口（Unified EFI，UEFI，本质上是 EFI 2.x），它已经开始替代古老的 基本输入/输出系统 （ Basic Input/Output System ） （BIOS）固件技术，有经验的计算机用户或多或少都有些熟悉 BIOS。本页面是给 Linux 用户使用 EFI 技术的一个快速介绍，其中包括有关开始将 Linux 安装到此类计算机上的建议。不幸的是，EFI 是一个庞杂的话题；EFI 软件本身是复杂的，许多实现有系统特定的怪异行为甚至是缺陷。因此，我无法在一个页面上描述在 EFI 计算机上安装和使用 Linux 的一切知识。我希望你能将本页面作为一个有用的起点，不管怎么说，每个部分以及末尾“参考文献”部分的链接可以指引你找到更多的文档。你的计算机是否使用 EFI 技术？EFI 是一种固件，意味着它是内置于计算机中处理低级任务的软件。最重要的是，固件控制着计算机的引导过程，反过来说这代表着基于 EFI 的计算机与基于 BIOS 的计算机的引导过程不同。（有关此规律的例外之处稍后再说。）这种差异可能使操作系统安装介质的设计超级复杂化，但是一旦安装好并运行之后，它对计算机的日常操作几乎没有影响。请注意，大多数制造商使用术语 “BIOS” 来表示他们的 EFI。我认为这种用法很混乱，所以我避免了；在我看来，EFI 和 BIOS 是两种不同类型的固件。注意：苹果公司的 Mac 使用的 EFI 在许多方面是不同寻常的。尽管本页面的大部分内容同样适用于 Mac，但有些细节上的出入，特别是在设置 EFI 引导加载程序的时候。这个任务最好在 OS X 上进行，使用 Mac 的 bless utility工具，我不在此做过多描述。自从 2006 年第一次推出以来，EFI 已被用于基于英特尔的 Mac 上。从 2012 年底开始，大多数安装 Windows 8 或更高版本系统的计算机就已经默认使用 UEFI 启动，实际上大多数 PC 从 2011 年中期就开始使用 UEFI，虽然默认情况下它们可能无法以 EFI 模式启动。2011 年前销出的 PC 也有一些支持 EFI，尽管它们大都默认使用 BIOS 模式启动。如果你不确定你的计算机是否支持 EFI，则应查看固件设置实用程序和参考用户手册关于 EFI、UEFI 以及 legacy booting 的部分。（可以通过搜索用户手册的 PDF 文件来快速了解。）如果你没有找到类似的参考，你的计算机可能使用老式的（“legacy”） BIOS 引导；但如果你找到了这些术语的参考，几乎可以肯定它使用了 EFI 技术。你还可以尝试只有 EFI 模式的引导加载器的安装介质。使用 rEFInd 制作的 USB 闪存驱动器或 CD-R 镜像是用来测试不错的选择。在继续之前，你应当了解大多数 x86 和 x86-64 架构的计算机上的 EFI 都包含一个叫做 兼容支持模块 Compatibility Support Module （CSM）的组件，这使得 EFI 能够使用旧的 BIOS 风格的引导机制来引导操作系统。这会非常方便，因为它向后兼容；但是这样也导致一些意外情况的发生，因为计算机不论以 EFI 模式引导还是以 BIOS （也称为 CSM 或 legacy）模式引导，在控制时没有标准的使用规范和用户界面。特别地，你的 Linux 安装介质非常容易意外的以 BIOS/CSM/legacy 模式启动，这会导致 Linux 以 BIOS/CSM/legacy 模式安装。如果 Linux 是唯一的操作系统，也可以正常工作，但是如果与在 EFI 模式下的 Windows 组成双启动的话，就会非常复杂。（反过来问题也可能发生。）以下部分将帮助你以正确模式引导安装程序。如果你在阅读这篇文章之前就已经以 BIOS 模式安装了 Linux，并且希望切换引导模式，请阅读后续章节，“哎呀：将传统模式下安装的引导转为 EFI 模式下的引导”。UEFI 的一个附加功能值得一提： 安全启动 Secure Boot 。此特性旨在最大限度的降低计算机受到 boot kit 病毒感染的风险，这是一种感染计算机引导加载程序的恶意软件。Boot kits 很难检测和删除，阻止它们的运行刻不容缓。微软公司要求所有带有支持 Windows 8 标志的台式机和笔记本电脑启用 安全启动。这一配置使 Linux 的安装变得复杂，尽管有些发行版可以较好的处理这个问题。不要将安全启动和 EFI 或 UEFI 混淆；支持 EFI 的计算机不一定支持 安全启动，而且支持 EFI 的 x86-64 的计算机也可以禁用 安全启动。微软同意用户在 Windows 8 认证的 x86 和 x86-64 计算机上禁用安全启动功能；然而对装有 Windows 8 的 ARM 计算机而言却相反，它们必须不允许用户禁用 安全启动。幸运的是，基于 ARM 的 Windows 8 计算机目前很少见。我建议避免使用它们。你的发行版是否支持 EFI 技术？大多数 Linux 发行版已经支持 EFI 好多年了。然而，不同的发行版对 EFI 的支持程度不同。大多数主流发行版（Fedora，OpenSUSE，Ubuntu 等）都能很好的支持 EFI，包括对安全启动的支持。另外一些“自行打造”的发行版，比如 Gentoo，对 EFI 的支持较弱，但它们的性质使其很容易添加 EFI 支持。事实上，可以向任意 Linux 发行版添加 EFI 支持：你需要安装 Linux（即使在 BIOS 模式下），然后在计算机上安装 EFI 引导加载程序。有关如何执行此操作的信息，请参阅“哎呀：将传统模式下安装的引导转为 EFI 模式下的引导”部分。你应当查看发行版的功能列表，来确定它是否支持 EFI。你还应当注意你的发行版对安全启动的支持情况，特别是如果你打算和 Windows 8 组成双启动。请注意，即使正式支持安全启动的发行版也可能要求禁用此功能，因为 Linux 对安全启动的支持通常很差劲，或者导致意外情况的发生。准备安装 Linux下面几个准备步骤有助于在 EFI 计算机上 Linux 的安装，使其更加顺利：1、 升级固件有些 EFI 是有问题的，不过硬件制造商偶尔会发布其固件的更新。因此我建议你将固件升级到最新可用的版本。如果你从论坛的帖子知道自己计算机的 EFI 有问题，你应当在安装 Linux 之前更新它，因为如果安装 Linux 之后更新固件，会有些问题需要额外的操作才能解决。另一方面，升级固件是有一定风险的，所以如果制造商提供了 EFI 支持，最好的办法就是按它们提供的方式进行升级。2、 了解如何使用固件通常你可以通过在引导过程之初按 Del 键或功能键进入固件设置实用程序。按下开机键后尽快查看相关的提示信息，或者尝试每个功能键。类似的，ESC 键或功能键通常可以进入固件的内置引导管理器，可以选择要进入的操作系统或外部设备。一些制造商把这些设置隐藏的很深。在某些情况下，如此页面所述，你可以在 Windows 8 内做到这些。3、调整以下固件设置快速启动 — 此功能可以通过在硬件初始化时使用快捷方式来加快引导过程。这很好用，但有时候会使 USB 设备不能初始化，导致计算机无法从 USB 闪存驱动器或类似的设备启动。因此禁用快速启动可能有一定的帮助，甚至是必须的；你可以让它保持激活，而只在 Linux 安装程序启动遇到问题时将其停用。请注意，此功能有时可能会以其它名字出现。在某些情况下，你必须启用 USB 支持，而不是禁用快速启动功能。安全启动 — Fedora，OpenSUSE，Ubuntu 以及其它的发行版官方就支持安全启动；但是如果在启动引导加载程序或内核时遇到问题，可能需要禁用此功能。不幸的是，没办法具体描述怎么禁用，因为不同计算机的设置方法也不同。请参阅我的安全启动页面获取更多关于此话题的信息。注意： 一些教程说安装 Linux 时需要启用 BIOS/CSM/legacy 支持。通常情况下，这样做是错的。启用这些支持可以解决启动安装程序涉及的问题，但也会带来新的问题。以这种方式安装的教程通常可以通过“引导修复”来解决这些问题，但最好从一开始就做对。本页面提供了帮助你以 EFI 模式启动 Linux 安装程序的提示，从而避免以后的问题。CSM/legacy 选项 — 如果你想以 EFI 模式安装，请关闭这些选项。一些教程推荐启用这些选项，有时这是必须的 —— 比如，有些附加视频卡需要在固件中启用 BIOS 模式。尽管如此，大多数情况下启用 CSM/legacy 支持只会无意中增加以 BIOS 模式启动 Linux 的风险，但你并不想这样。请注意，安全启动和 CSM/legacy 选项有时会交织在一起，因此更改任一选项之后务必检查另一个。4、 禁用 Windows 的快速启动功能这个页面描述了如何禁用此功能，不禁用的话会导致文件系统损坏。请注意此功能与固件的快速启动不同。5、 检查分区表使用 GPT fdisk、parted 或其它任意分区工具检查磁盘分区。理想情况下，你应该创建一个包含每个分区确切起点和终点（以扇区为单位）的纸面记录。这会是很有用的参考，特别是在安装时进行手动分区的时候。如果已经安装了 Windows，确定可以识别你的 EFI 系统分区（ESP），它是一个 FAT 分区，设置了“启动标记”（在 parted 或 Gparted 中）或在 gdisk 中的类型码为 EF00。安装 Linux大部分 Linux 发行版都提供了足够的安装说明；然而我注意到了在 EFI 模式安装中的几个常见的绊脚石：确保使用正确位深的发行版 — EFI 启动加载器和 EFI 自身的位深相同。现代计算机通常是 64 位，尽管最初几代基于 Intel 的 Mac、一些现代的平板电脑和变形本、以及一些鲜为人知的电脑使用 32 位 EFI。虽然可以将 32 位 EFI 引导加载程序添加至 32 位发行版，但我还没有遇到过正式支持 32 位 EFI 的 Linux 发行版。（我的 《在 Linux 上管理 EFI 引导加载程序》 一文概述了引导加载程序，而且理解了这些原则你就可以修改 32 位发行版的安装程序，尽管这不是一个初学者该做的。）在 64 位 EFI 的计算机上安装 32 位发行版最让人头疼，我不准备在这里描述这一过程；在具有 64 位 EFI 的计算机上，你应当使用 64 位的发行版。正确准备引导介质 — 将 .iso 镜像传输到 USB 闪存驱动器的第三方工具，比如 unetbootin，在创建正确的 EFI 模式引导项时经常失败。我建议按照发行版维护者的建议来创建 USB 闪存驱动器。如果没有类似的建议，使用 Linux 的 dd 工具，通过执行 dd if=image.iso of=/dev/sdc 在识别为 /dev/sdc 的 USB 闪存驱动器上创建一个镜像。至于 Windows，有 WinDD 和 dd for windows，但我从没测试过它们。请注意，使用不兼容 EFI 的工具创建安装介质是错误的，这会导致人们进入在 BIOS 模式下安装然后再纠正它们的误区，所以不要忽视这一点！备份 ESP 分区 — 如果计算机已经存在 Windows 或者其它的操作系统，我建议在安装 Linux 之前备份你的 ESP 分区。尽管 Linux 不应该 损坏 ESP 分区已有的文件，但似乎这时不时发生。发生这种事情时备份会有很大用处。只需简单的文件级的备份（使用 cp，tar，或者 zip 类似的工具）就足够了。以 EFI 模式启动 — 以 BIOS/CSM/legacy 模式引导 Linux 安装程序的意外非常容易发生，特别是当固件启用 CSM/legacy 选项时。下面一些提示可以帮助你避免此问题：进入 Linux shell 环境执行 ls /sys/firmware/efi 验证当前是否处于 EFI 引导模式。如果你看到一系列文件和目录，表明你已经以 EFI 模式启动，而且可以忽略以下多余的提示；如果没有，表明你是以 BIOS 模式启动的，应当重新检查你的设置。使用固件内置的引导管理器（你应该已经知道在哪；请参阅“了解如何使用固件”）使之以 EFI 模式启动。一般你会看到 CD-R 或 USB 闪存驱动器两个选项，其中一个选项包括 EFI 或 UEFI 字样的描述，另一个不包括。使用 EFI/UEFI 选项来启动介质。禁用安全启动 - 即使你使用的发行版官方支持安全启动，有时它们也不能生效。在这种情况下，计算机会静默的转到下一个引导加载程序，它可能是启动介质的 BIOS 模式的引导加载程序，导致你以 BIOS 模式启动。请参阅我的安全启动的相关文章以得到禁用安全启动的相关提示。如果 Linux 安装程序总是无法以 EFI 模式启动，试试用我的 rEFInd 引导管理器 制作的 USB 闪存驱动器或 CD-R。如果 rEFInd 启动成功，那它保证是以 EFI 模式运行的，而且在基于 UEFI 的 PC 上，它只显示 EFI 模式的引导项，因此若您启动到 Linux 安装程序，则应处于 EFI 模式。（但是在 Mac 上，除了 EFI 模式选项之外，rEFInd 还显示 BIOS 模式的引导项。）准备 ESP 分区 — 除了 Mac，EFI 使用 ESP 分区来保存引导加载程序。如果你的计算机已经预装了 Windows，那么 ESP 分区就已存在，可以在 Linux 上直接使用。如果不是这样，那么我建议创建一个大小为 550 MB 的 ESP 分区。（如果你已有的 ESP 分区比这小，别担心，直接用就行。）在此分区上创建一个 FAT32 文件系统。如果你使用 Gparted 或者 parted 准备 ESP 分区，记得给它一个“启动标记”。如果你使用 GPT fdisk（gdisk，cgdisk 或 sgdisk）准备 ESP 分区，记得给它一个名为 EF00 的类型码。有些安装程序会创建一个较小的 ESP 分区，并且设置为 FAT16 文件系统。尽管这样能正常工作，但如果你之后需要重装 Windows，安装程序会无法识别 FAT16 文件系统的 ESP 分区，所以你需要将其备份后转为 FAT32 文件系统。使用 ESP 分区 — 不同发行版的安装程序以不同的方式辨识 ESP 分区。比如，Debian 和 Ubuntu 的某些版本把 ESP 分区称为“EFI boot partition”，而且不会明确显示它的挂载点（尽管它会在后台挂载）；但是有些发行版，像 Arch 或 Gentoo，需要你去手动挂载。尽管将 ESP 分区挂载到 /boot 进行相应配置后可以正常工作，特别是当你想使用 gummiboot 或 ELILO（译者注：gummiboot 和 ELILO 都是 EFI 引导工具）时，但是在 Linux 中最标准的 ESP 分区挂载点是 /boot/efi。某些发行版的 /boot 不能用 FAT 分区。因此，当你设置 ESP 分区挂载点时，请将其设置为 /boot/efi。除非 ESP 分区没有，否则不要为其新建文件系统 — 如果已经安装 Windows 或其它操作系统，它们的引导文件都在 ESP 分区里，新建文件系统会销毁这些文件。设置引导程序的位置 — 某些发行版会询问将引导程序（GRUB）装到何处。如果 ESP 分区按上述内容正确标记，不必理会此问题，但有些发行版仍会询问。请尝试使用 ESP 分区。其它分区 — 除了 ESP 分区，不再需要其它的特殊分区；你可以设置 根（/）分区，swap 分区，/home 分区，或者其它分区，就像你在 BIOS 模式下安装时一样。请注意 EFI 模式下不需要设置BIOS 启动分区，所以如果安装程序提示你需要它，意味着你可能意外的进入了 BIOS 模式。另一方面，如果你创建了 BIOS 启动分区，会更灵活，因为你可以安装 BIOS 模式下的 GRUB，然后以任意模式（EFI 模式 或 BIOS 模式）引导。解决无显示问题 — 2013 年，许多人在 EFI 模式下经常遇到（之后出现的频率逐渐降低）无显示的问题。有时可以在命令行下通过给内核添加 nomodeset 参数解决这一问题。在 GRUB 界面按 e 键会打开一个简易文本编辑器。大多数情况下你需要搜索有关此问题的更多信息，因为此问题更多是由特定硬件引起的。在某些情况下，你可能不得不以 BIOS 模式安装 Linux。但你可以手动安装 EFI 引导程序让 Linux 以 EFI 模式启动。请参阅《 在 Linux 上管理 EFI 引导加载程序》 页面获取更多有关它们以及如何安装的可用信息。解决安装后的问题如果 Linux 无法在 EFI 模式下工作，但在 BIOS 模式下成功了，那么你可以完全放弃 EFI 模式。在只有 Linux 的计算机上这非常简单；安装 BIOS 引导程序即可（如果你是在 BIOS 模式下安装的，引导程序也应随之装好）。如果是和 EFI 下的 Windows 组成双系统，最简单的方法是安装我的 rEFInd 引导管理器。在 Windows 上安装它，然后编辑 refind.conf 文件：取消注释 scanfor 一行，并确保拥有 hdbios 选项。这样 rEFInd 在引导时会重定向到 BIOS 模式的引导项。如果重启后计算机直接进入了 Windows，很可能是 Linux 的引导程序或管理器安装不正确。（但是应当首先尝试禁用安全启动；之前提到过，它经常引发各种问题。）下面是关于此问题的几种可能的解决方案：使用 efibootmgr — 你可以以 EFI 模式引导一个 Linux 急救盘，使用 efibootmgr 实用工具尝试重新注册你的 Linux 引导程序，如这里所述。使用 Windows 上的 bcdedit — 在 Windows 管理员命令提示符窗口中，输入 bcdedit /set {bootmgr}path \EFI\fedora\grubx64.efi 会用 ESP 分区的 EFI/fedora/grubx64.efi 文件作为默认的引导加载程序。根据需要更改此路径，指向你想设置的引导文件。如果你启用了安全启动，需要设置 shim.efi，shimx64.efi 或者 PreLoader.efi（不管有哪个）为引导而不是 grubx64.efi。安装 rEFInd — 有时候 rEFInd 可以解决这个问题。我推荐使用 CD-R 或者 USB 闪存驱动器进行测试。如果 Linux 可以启动，就安装 Debian 软件包、RPM 程序，或者 .zip 文件包。（请注意，你需要在一个高亮的 Linux vmlinuz* 选项按两次 F2 或 Insert 修改启动选项。如果你的启动分区是单独的，这就更有必要了，因为这种情况下，rEFInd 无法找到根（/）分区，也就无法传递参数给内核。）使用修复引导程序 — Ubuntu 的引导修复实用工具可以自动修复一些问题；然而，我建议只在 Ubuntu 和 密切相关的发行版上使用，比如 Mint。有时候，有必要通过高级选项备份并替换 Windows 的引导。劫持 Windows 引导程序 — 有些不完整的 EFI 引导只能引导 Windows，就是 ESP 分区上的 EFI/Microsoft/Boot/bootmgfw.efi 文件。因此，你可能需要将引导程序改名（我建议将其移动到上级目录 EFI/Microsoft/bootmgfw.efi），然后将首选引导程序复制到这里。（大多数发行版会在 EFI 的子目录放置 GRUB 的副本，例如 Ubuntu 的 EFI/ubuntu，Fedora 的 EFI/fedora。）请注意此方法是个丑陋的解决方法，有用户反映 Windows 会替换引导程序，所以这个办法不是 100% 有效。然而，这是在不完整的 EFI 上生效的唯一办法。在尝试之前，我建议你升级固件并重新注册自己的引导程序，Linux 上用 efibootmgr，Windows 上用 bcdedit。有关引导程序的其它类型的问题 - 如果 GRUB（或者你的发行版默认的其它引导程序或引导管理器）没有引导操作系统，你必须修复这个问题。因为 GRUB 2 引导 Windows 时非常挑剔，所以 Windows 经常启动失败。在某些情况下，安全启动会加剧这个问题。请参阅我的关于 GRUB 2 的页面获取一个引导 Windows 的 GRUB 2 示例。还会有很多原因导致 Linux 引导出现问题，类似于 BIOS 模式下的情况，所以我没有全部写出来。尽管 GRUB 2 使用很普遍，但我对它的评价却不高 - 它很复杂，而且难以配置和使用。因此，如果你在使用 GRUB 的时候遇到了问题，我的第一反应就是用别的东西代替。我的用于 Linux 的 EFI 引导程序页面有其它的选择。其中包括我的 rEFInd 引导管理器，它除了能够让许多发行版上的 GRUB 2 工作，也更容易安装和维护 - 但是它还不能完全代替 GRUB 2。除此之外，EFI 引导的问题可能很奇怪，所以你需要去论坛发帖求助。尽量将问题描述完整。Boot Info Script 可帮助你提供有用的信息 - 运行此脚本，将生成的名为 RESULTS.txt 的文件粘贴到论坛的帖子上。一定要将文本粘贴到 [code] 和 [/code] 之间；不然会遭人埋怨。或者将 RESULTS.txt 文件上传到 pastebin 网站上，比如 pastebin.com，然后将网站给你的 URL 地址发布到论坛。哎呀：将传统模式下安装的系统转为 EFI 模式下引导警告：这些指南主要用于基于 UEFI 的 PC。如果你的 Mac 已经安装了 BIOS 模式下的 Linux，但想以 EFI 模式启动 Linux，可以在 OS X 中安装引导程序。rEFInd（或者旧式的 rEFIt）是 Mac 上的常用选择，但 GRUB 可以做的更多。论坛上有很多人看了错误的教程，在已经存在 EFI 模式的 Windows 的情况下，安装了 BIOS 引导的 Linux，这一问题在 2015 年初很普遍。这样配置效果很不好，因为大多数 EFI 很难在两种模式之间切换，而且 GRUB 也无法胜任这项工作。你可能会遇到不完善的 EFI 无法启动外部介质的情况，也可能遇到 EFI 模式下的显示问题，或者其它问题。如前所述，在“解决安装后的问题”部分，解决办法之一就是在 Windows 上安装 rEFInd，将其配置为支持 BIOS 模式引导。然后可以引导 rEFInd 并链式引导到你的 BIOS 模式的 GRUB。在 Linux 上遇到 EFI 特定的问题时，例如无法使用显卡，我建议你使用这个办法修复。如果你没有这样的 EFI 特定的问题，在 Windows 中安装 rEFInd 和合适的 EFI 文件系统驱动可以让 Linux 直接以 EFI 模式启动。这个解决方案很完美，它和我下面描述的内容等同。大多数情况下，最好将 Linux 配置为以 EFI 模式启动。有很多办法可以做到，但最好的是使用 Linux 的 EFI 引导模式（或者，可以想到，Windows，或者一个 EFI shell）注册到你首选的引导管理器。实现这一目标的方法如下：下载适用于 USB 闪存驱动器或 CD-R 的 rEFInd 引导管理器。从下载的镜像文件生成安装介质。可以在任何计算机上准备，不管是 EFI 还是 BIOS 的计算机都可以（或者在其它平台上使用其它方法）。如果你还没有这样做，请禁用安全启动。因为 rEFInd CD-R 和 USB 镜像不支持安全启动，所以这很必要，你可以在以后重新启用它。在目标计算机上启动 rEFInd。如前所述，你可能需要调整固件设置，并使用内置引导管理器选择要引导的介质。你选择的那一项也许在其描述中包含 UEFI 这样的字符串。在 rEFInd 上测试引导项。你应该至少看到一个启动 Linux 内核的选项（名字含有 vmlinuz 这样的字符串）。有两种方法可以启动它：* 如果你*没有*独立的 `/boot` 分区，只需简单的选择内核并按回车键。Linux 就会启动。 * 如果你*确定有*一个独立的 `/boot` 分区，按两次 `Insert` 或 `F2` 键。这样会打开一个行编辑器，你可以用它来编辑内核选项。增加一个 `root=` 格式以标识根（/）文件系统，如果根（/）分区在 `/dev/sda5` 上，就添加 `root=/dev/sda5`。如果不知道根文件系统在哪里，那你需要重启并尽可能想到办法。在一些罕见的情况下，你可能需要添加其它内核选项来代替或补充 `root=` 选项。比如配置了 LVM（LCTT 译注：Logical Volume Manager，逻辑卷管理）的 Gentoo 就需要 `dolvm` 选项。Linux 一旦启动，安装你想要的引导程序。rEFInd 的安装很简单，可以通过 RPM、Debian 软件包、PPA，或从rEFInd 下载页面下载的二进制 .zip 文件进行安装。在 Ubuntu 和相关的发行版上，引导修改程序可以相对简单地修复你的 GRUB 设置，但你要对它有信心可以正常工作。（它通常工作良好，但有时候会把事情搞得一团糟。）另外一些选项都在我的 《在 Linux 上管理 EFI 引导加载程序》 页面上。如果你想在安全启动激活的情况下引导，只需重启并启用它。但是，请注意，可能需要额外的安装步骤才能将引导程序设置为使用安全启动。有关详细信息，请参阅我关于这个主题的页面或你的引导程序有关安全启动的文档资料。重启时，你可以看到刚才安装的引导程序。如果计算机进入了 BIOS 模式下的 GRUB，你应当进入固件禁用 BIOS/CSM/legacy 支持，或调整引导顺序。如果计算机直接进入了 Windows，那么你应当阅读前一部分，“解决安装后的问题”。你可能想或需要调整你的配置。通常是为了看到额外的引导选项，或者隐藏某些选项。请参阅引导程序的文档资料，以了解如何进行这些更改。参考和附加信息信息网页我的 《在 Linux 上管理 EFI 引导加载程序》 页面含有可用的 EFI 引导程序和引导管理器。OS X's bless tool 的手册页 页面在设置 OS X 平台上的引导程序或引导管理器时可能会很有用。EFI 启动过程 描述了 EFI 启动时的大致框架。Arch Linux UEFI wiki page 有大量关于 UEFI 和 Linux 的详细信息。亚当·威廉姆森写的一篇不错的 《什么是 EFI，它是怎么工作的》。这个页面 描述了如何从 Windows 8 调整 EFI 的固件设置。马修·J·加勒特是 Shim 引导程序的开发者，此程序支持安全启动，他维护的博客经常更新有关 EFI 的问题。如果你对 EFI 软件的开发感兴趣，我的 《EFI 编程》 页面可以为你起步助力。附加程序rEFInd 官网gummiboot 官网ELILO 官网GRUB 官网GPT fdisk 分区软件官网Ubuntu 的 引导修复实用工具可帮助解决一些引启动问题交流Sourceforge 上的 rEFInd 交流论坛是 rEFInd 用户互相交流或与我联系的一种方法。Pastebin 网站，比如 http://pastebin.com， 是在 Web 论坛上与其他用户交换大量文本的一种便捷的方法。（题图：Pixabay，CC0）via: http://www.rodsbooks.com/linux-uefi/作者：Roderick W. Smith 译者：fuowang 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出