从Windows 8操作系统时代开始,安装操作系统的方法也有了很大的改变,Windows 8采用了Secure Boot引导启动的方式,而不是过去Win XP和Win 7的Legacy启动方式,从而导致的问题是所有预装Windows 8/8.1系统的笔记本要安装Win7的话必须修改BIOS,给很多想更换操作系统的用户增加了一点小难度。

那么什么是Secure Boot呢?它和Windows 8还有UEFI启动有什么关系呢!接下来我们就来介绍下Secure Boot、UEFI、BIOS相关知识和各自之间的关系。(对于Secure Boot启动方式和egacy启动方式的差别,可以参考这篇文章《UEFI启动和Legacy启动的差别》)

BIOS和UEFI

所有电脑启动的时候,都会运行BIOS程序,用于初始化硬件。

BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重 要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

自从个人电脑诞生后,就一直如此。过去30年我们都在使用类似上图的画面,设置硬件参数。不用说,BIOS已经变得日益不适用了。

1998 年,Intel牵头,联合AMD、AMI、Apple、Dell、HP、IBM、Lenovo、Microsoft和Phoenix等业界主要厂商,开始 制定新一代BIOS。这个项目叫做"统一的可扩展固定接口"(Unified Extensible Firmware Interface),简称UEFI。2005年推出1.1版,目前是2.3版。

新型UEFI,全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface), 是一种详细描述全新类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上,从而使开机程序化繁为简,节省时间。

从2012年9月以来,电脑运行的已经不是BIOS,而是UEFI BIOS。等它运行结束,再载入操作系统。

微软强行部署Secure Boot

UEFI是一个很先进的、面向未来的规格。但是很长时间内无法推广,原因就是微软公司不积极。

Windows操作系统是桌面市场的主流系统,如果它不推广UEFI,就没有硬件厂商会跟进。所以,普通消费者对这个新规格所知甚少。

意想不到的变化,出现在2011年9月,微软毫无预兆地突然宣布,Windows 8将启用UEFI。

这本来是一件好事。但是,问题是微软感兴趣的不是整个UEFI,而是UEFI的一个子规格Secure Boot。它要强行部署Secure Boot。

Secure Boot

Secure Boot只是UEFI的一个部分。两者的关系是局部与整体的关系。

Secure Boot的目的,是防止恶意软件侵入。它的做法就是采用密钥。UEFI规定,主板出厂的时候,可以内置一些可靠的公钥。然后,任何想要在这块主板上加载的 操作系统或者硬件驱动程序,都必须通过这些公钥的认证。也就是说,这些软件必须用对应的私钥签署过,否则主板拒绝加载。由于恶意软件不可能通过认证,因此 就没有办法感染Boot。

这个设想是好的。但是,UEFI没规定哪些公钥是可靠的,也没规定谁负责颁发这些公钥,都留给硬件厂商自己决定。现在,微软就是要求,主板厂商内置Windows 8的公钥。

Windows 8/Windows8.1

首先明确,在不打开Secure Boot的情况下,Windows 8/8.1可以安装。这与安装以前版本的Windows没有差别。

但是,微软规定,所有预装Windows 8的厂商(即OEM厂商)都必须打开Secure Boot。因此,消费者购买一台预装Windows 8的台式机或笔记本,想要在上面再安装其他操作系统(包括以前版本的Windows)是不可能的,除非关闭Secure Boot,或者其他操作系统能够通过Windows 8/8.1公钥的认证。

如果选择关闭Secure Root,那么预装的Windows 8/8.1将无法使用,需要重新安装。

对Linux的影响

Secure Boot规格的本意是,让操作系统厂商自行选择公钥,通过认证。但是实际上,只有微软公司才有能力,让主板厂商内置它的公钥,其他公司都不具备这种能力。

根据微软针对OEM厂商的一则规定,Windows 8要求PC电脑采用UEFI(统一可扩展固件接口),这个接口将会替代PC机诞生以来历史悠久的BIOS固件设置。关于UEFI这个标准接口,是支持 Windows、Linux 和 OS X 操作系统的,只是微软要求预装Windows 8 的PC电脑需要支持安全性启动机制,启动过程中涉及到的软件/固件都必须打上CA数字签名,这样,对于Linux 这种开源的无签名的系统就会直接阻止。

因此,如果要在打开Secure Boot的主板上安装Linux系统,这个系统就必须通过Windows 8的认证。

目前,微软公司把Win8的数字签名外包给了Verisign。操作系统厂商想要通过认证,就必须花99美元,向Verisign买一张数字证书,嵌入自家的操作系统。

最新动态是,Linux的各个发行版之中,Ubuntu已经购买了数字证书,Fedora和SUSE计划购买,其他发行版还没做出决定。

因此,在预装Windows 8的电脑上安装Linux(或其他操作系统)的最佳做法,就是进入BIOS,关闭Secure Boot。但是,这意味着你花钱买来的Windows 8将无法使用。

目前看上去,Linux购买Windows8的数字证书,是眼下唯一可行的相对容易的解决方法。但是,这种做法不可接受。

首先,系统的公钥被微软控制,后果难以预料。如果微软决定更换和废除这个公钥,Linux就要被迫跟进。
其次,Linux的启动管理器Grub是GPL许可证,该许可证(第三版)明文禁止软件使用密钥配合硬件阻止一部分用户的使用,因此要改用非GPL许可证的启动管理器。
再次,只有几个较大的Linux发行版才有能力购买数字证书,较小的发行版和用户自己定制的版本最终还是需要有自己的公钥。

总结

Secure Boot的用意是保证系统安全,但现在似乎成了厂商保护市场垄断、阻碍竞争一种手段。

除了微软公司,苹果公司也有这种倾向。在新一代的iPhone和iPad上面安装其他操作系统,似乎是不可能的。(不过一旦iPhone和iPad上面安能装其他操作系统,估计苹果就不是今天这个样子了,苹果玩的就是封闭!其实垄断也是有好处的!)

自由软件基金会呼吁反Secure Boot垄断,就是基于这种考虑:用户应该拥有硬件和软件的使用自由,操作系统应该是开放的,而不是封闭的。

作为一种规格,自由软件基金会并不反对Secure Boot,它只是要求硬件厂商提供便利,使得用户可以更容易地安装和管理公钥,从而使用硬件平台对所有操作系统(以及设备驱动)保持开放

UEFI、BIOS、Secure Boot的关系和知识介绍相关推荐

  1. 如何在 Linux 系统启用 UEFI 的 Secure Boot

    如何在 Linux 系统启用 UEFI 的 Secure Boot 概述 Secure Boot 作为 UEFI 的一个选项,它可以被设置为开启或关闭 ( 有少数恶心的计算机里面, Secure Bo ...

  2. Secure Boot什么意思?BIOS中Secure Boot灰色无法更改解决方法详解

    在电脑Bios设置中,有一项"Secure Boot"相关设置,很多朋友不知道Secure Boot什么意思,也不知道该如何设置.下面本文就来谈谈Secure Boot设置相关的知 ...

  3. hp linux 禁用u盘启动,BIOS关闭Secure Boot(安全启动)方法大全(联想,华硕,DELL,HP等品牌)...

    " 在预装win10系统的电脑上BIOS中安全启动Secure Boot是默认开启的,如果你要安装其他系统,如Win7.Linux等系统那么需要关闭才可以,不然会无启动,这小编整理了联想,华 ...

  4. 华硕主板禁用UEFI安全启动(Disable Secure Boot for ASUS Motherboard)

    新人第一次写博客,算是搬运google的答案吧,因为百度了两三个小时一直没解决问题,google了一次出来一个youtube视频便解决了,有种说不出来的郁闷( ̄﹏ ̄:). 先介绍下背景,最近配了台新电 ...

  5. linux secure boot(安全启动)下为内核模块签名

    文章目录 linux secure boot(安全启动)下为内核模块签名 背景 Secure Boot安全启动开启关闭方法 内核驱动签名 生成签名证书和私钥 导入签名证书 BIOS(UEFI)导入证书 ...

  6. [Windows_UEFI BIOS]详解 Secure Boot 和 Winows 8 及 UEFI启动 的关系

    一.自由软件基金会的呼吁 上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万). 我觉得,这个呼吁很重要 ...

  7. (转)详解 Secure Boot 和 Winows 8 及 UEFI启动的关系

    很多同学都发现了,在安装Windows 8或是带UEFI启动的电脑时要更改BIOS里的Secure Boot值!比如戴尔的INS14R-5420,INS15R-5520,INS14R-5421,INS ...

  8. hp linux 禁用u盘启动项,BIOS关闭Secure Boot(安全启动)方法大全(联想,华硕,DELL,HP等品牌)...

    2019-11-20 微星B450系列是微信推出的搭配AMD锐龙处理器使用的一款主板,具有性能好,稳定,价格实惠的特点,很多朋友组装好电脑之后想要安装Win7系统,却不知道如何下手,毕竟这款主板和锐龙 ...

  9. UEFI Secure Boot学习草稿(quqi99)

    作者:张华 发表于:2020-09-29 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 什么是secure boot secureboot is design ...

最新文章

  1. 【Tree】迷宫生成算法
  2. Java线性池的使用方式以及核心运行原理
  3. DateTimePicker——开源的Android日历类库
  4. html input 传值 request接到值为null,解决jsp向servlet传值为null的问题
  5. android mat下载地址,MatLog下载-MatLog(Log获取)下载v1.2.3 安卓版-西西软件下载
  6. 自考c语言程序阅读题,自考C语言程序设计模拟试题二答案.DOC
  7. IOS UI UITableView
  8. layui生产管理系统_ssm开发生产制造业MES系统源码
  9. python高级编程教程_python高级编程——入门语法(一)
  10. Maxthon中RSS阅读器BUG解决[原创]
  11. Java中9种常见的CMS GC问题分析与解决
  12. Monitor对象是什么?
  13. uniapp 分享到微信、QQ、朋友圈
  14. uniapp上传华为应用市场,您的应用提示获取手机存储敏感权限,用户不同意时强制退出应用
  15. 建立HBase的集群和HDInsight在Hadoop中使用Hive来查询它们
  16. 教你几种方法最大限度减轻酒精对你身体的伤害
  17. 下个五年,跨境支付的变数在哪里?
  18. 打破行业困境,大麦如何引领NB-IoT技术的创新应用
  19. python3-爬虫-百度新闻结果
  20. Java 生鲜电商平台 - API 接口设计之 token、timestamp、sign 具体架构与实现

热门文章

  1. 菜鸟建站别发愁,省钱建站新攻略!
  2. ISA Server 2004 FAQ集
  3. linux+xampp搭建WordPress个人网站过程详解
  4. Java 定时任务调度工具 Quartz(Part 2)
  5. Java三大主流开源工作流引擎技术分析
  6. JavaScript创建对象的方法
  7. Error: No module named books
  8. Struts2.0下的客户端验证
  9. 中文Python:中文编程不是梦
  10. 未来人们获取收入的几个途径