一文让你搞懂UEFI,与传统BIOS的区别,BIOS的工作原理,EFI 体系分区、EFI ...

打印 上一主题 下一主题

主题 885|帖子 885|积分 2655

一文让你搞懂UEFI,与传统BIOS的区别,BIOS的工作原理,EFI 体系分区、EFI 变量、EFI 的启动过程,UEFI的架构,UEFI安全启动,主板及固件刷机工具使用。

媒介
UEFI是什么?
传统BIOS
BIOS作为标准
BIOS作为实现
BIOS的工作原理
传统BIOS的范围性
BIOS VS UEFI
UEFI?
UEFI概念
EFI 体系分区
EFI 变量
EFI 的启动过程
EFI 变量的影响
UEFI的架构
UEFI启动
UEFI 启动 Flow (Windos)
UEFI 启动 Flow (Linux)
UEFI安全启动
UEFI的资料
文档
博客
实操
媒介
很难用一篇文章去完全的相识UEFI,这篇文章的目标是希望能让不相识的朋侪看完后到达下面几个目标:
UEFI是什么:概念
UFEI用来干什么:应用
UEFI有些什么东西:架构
UEFI重点场景:启动
UEFI学习资料:推荐
UEFI是什么?
这就不得不提提BIOS。
传统BIOS
为了更好地理解UEFI,我们首先需要回顾一下汗青。自20世纪80年代以来,盘算机不停在使用BIOS。
当我们提到BIOS时,根据上下文的不同,它可能代表不同的含义:
BIOS标准:这是一个广泛的概念,指的是一种在盘算机启动时初始化硬件并加载操作体系引导步伐的标准接口。
具体的BIOS实现——即特定于主板的固件(“ASUS $motherboard_name BIOS”):
这是由主板制造商编写或授权的代码。
当盘算机开机时,硬件被设置为开始实验BIOS。这是CPU需要知道的全部内容,即CPU不需要相识驱动器、文件体系或操作体系。BIOS负责初始化硬件,加载引导加载步伐(如GRUB或Windows Boot Manager),然后引导加载步伐负责加载并启动操作体系。
简而言之,BIOS是盘算机启动过程中的一个重要环节,它负责在操作体系加载之前初始化硬件,并为操作体系的启动提供必要的情况。而UEFI(同一可扩展固件接口)是BIOS的当代替换品,提供了更多的功能和更好的安全性。
BIOS作为标准
作为一个标准,BIOS界说了以下内容:
一个硬编码的内存位置,盘算机在开机时CPU将从该位置开始实验BIOS代码。
磁盘位置,操作体系制造商可以在这些位置放置其引导加载步伐以启动其操作体系。
从硬盘和软盘读写数据(因此不是所有步伐都需要直接处理IDE/SATA等总线)
读取键盘按键 => BIOS是一个硬件抽象层。
应用步伐接口(APIs)用于:
其他许多功能
通过这些方式,BIOS为以下对象提供了API:
操作体系制造商
CPU制造商
开发职员与操作体系的硬件抽象API进行交互,乃至操作体系本身也不使用太多的BIOS API(因为它们直接控制硬件以得到更高级别的访问权限,如许就很不安全了)
纵然在DOS时代,应用步伐开发职员也可能使用DOS API进行抽象,而不是直接使用BIOS。
应用步伐开发职员。不外,现在这些API的使用已经不多了,因为:
BIOS作为实现
你可能熟悉更新主板BIOS的过程。待革新的BIOS是特定于主板的(即不存在适用于所有主板的单一BIOS),因为BIOS的实现是特定于主板的。
我并不完全相识制造商特有的所有内容,但我推测不同主板的芯片组会有所不同,好比内存控制器的初始化和处理、内置图形处理器等。
BIOS的工作原理
x86 CPU被计划为从一个硬编码的内存位置(0xFFFFFFF0)开始实验代码。这个内存位置由主板的BIOS代码ROM提供支持。在电气上,很容易将不同的地址空间分开,其中某些位置从RAM读取,而某些位置则从BIOS ROM等读取。要更深入地相识这一概念在电气上的实现,请观看此视频。
以下是一个过于简化的视图:

BIOS负责现实启动你的操作体系。
在BIOS设置中,你通常可以设置启动次序,如CD-ROM、硬盘1、硬盘2等,以及它们的任何组合。BIOS会根据你的启动次序偏好找到第一个可启动项。
传统BIOS的范围性
由于引导加载步伐大小的限定,大多数操作体系不得不使用复杂的链式启动过程。
传统BIOS启动过程
对于硬盘来说,存在一个引导扇区。引导扇区,或者更具体地说,是主引导记载(MBR),它包罗引导加载步伐,并且其大小限定现实上是440字节,因此仅凭这个大小的引导加载步伐绝对无法加载当代操作体系。
通常,MBR中的引导加载步伐会将控制权通报给活动分区的引导加载步伐(VBR,卷引导记载),但它也有类似的大小限定。
加载操作体系至少意味着引导加载步伐必须从磁盘读取内核(Linux/Windows等)并将其控制权交给它。内核更加智能,可以或许理解各种文件体系,如NTFS/FAT等。
但是,为了让引导加载步伐从磁盘读取内核,**它必须知道如何遍历文件体系以访问内核。**因此,引导加载步伐会从文件体系的根目录读取并链式加载一个“第二阶段”(这是一个更简朴的使命)——一个可以更大、因此可以包罗更复杂代码的文件。
在Windows中,这个第二阶段过去被称为NTLDR(“NT加载步伐”),它位于你的 C:驱动器的根目录下。

以下是关于传统BIOS和旧版Windows版本的启动过程:

如你所见,有很多箭头——引导加载步伐组件分布在各个地方。有三个不同的特定于Windows的位置用于开始加载现实的内核。只要其中一个组件出错,你就会得到一个无法启动的体系。
Linux(链式GRUB)的情况也大致类似。
搞了这么多的BIOS?你的标题是UEFI欸,你别着急,继续看。
BIOS VS UEFI
着实大家对BIOS不陌生,到这里呢,我们来对通过一个对比引出我们的主角UEFI。
BIOS 代表根本输入输出体系(Basic Input/Output System),是我们在上述启动过程中提到的固件。
它存储在可擦除可编程只读存储器(EPROM, Erasable Programmable Read-Only Memory)中,这使得制造商可以轻松地推送更新。

BIOS 提供了许多辅助功能,这些功能允许读取附加存储设备的引导扇区并在屏幕上打印信息。您可以在启动过程的初始阶段通过按 Del、F2 或 F10 键来访问 BIOS。
UEFI 代表同一可扩展固件接口(Unified Extensible Firmware Interface)。它与 BIOS 实验类似的使命,但有一个根本区别:它将所有关于初始化和启动的数据存储在 .efi 文件中,而不是存储在固件上。

这个 .efi 文件存储在硬盘上一个名为 EFI 体系分区(EFI System Partition, ESP)的特殊分区中。这个 ESP 分区还包罗引导加载步伐。
UEFI 被计划用来降服旧版 BIOS 的许多限定,包罗:
UEFI 支持高达 9 泽它字节(Zettabytes)的驱动器大小,而 BIOS 仅支持 2.2 太字节(Terabytes)。
UEFI 提供更快的启动时间。
UEFI 具有独立的驱动步伐支持,而 BIOS 的驱动步伐支持存储在 ROM 中,因此更新 BIOS 固件有点困难。
UEFI 提供类似“安全启动”(Secure Boot)的安全功能,这可以防止盘算机从未经授权/未署名的应用步伐启动。这有助于防止 rootkit,但也会妨碍双体系启动,因为它将其他操作体系视为未署名的应用步伐。现在,只有 Windows 和 Ubuntu 是已署名的操作体系(如果我有误,请告诉我)。
UEFI 以 32 位或 64 位模式运行,而 BIOS 以 16 位模式运行。因此,UEFI 可以或许提供图形用户界面(GUI, Graphical User Interface),允许使用鼠标进行导航,而 BIOS 仅允许使用键盘进行导航。
当然您可能不需要 UEFI
只管所有当代盘算机都默认配备了 UEFI,但您可能选择使用 BIOS 而不是 UEFI 的原因有几个:
如果您是初学者,并且不关心与任何类型的固件打交道,那么 BIOS 适合您。
如果您每个硬盘或分区的容量小于 2TB,那么您可以使用 BIOS。
BIOS 允许在不更改任何设置的情况下运行多个操作体系。从当代的角度来看,这可能是一个安全题目,但对用户来说没有贫苦。
BIOS 向操作体系提供体系信息。因此,如果您的操作体系以 16 位模式运行,它不需要编写与硬件交互的代码。它可以直接使用 BIOS 提供的方法。否则,如果操作体系切换到 32 位或 64 位模式,则需要提供本身的与硬件交互的子步伐。
如果您更喜好使用键盘和基于文本的界面而不是使用鼠标和图形用户界面的导航,那么 BIOS 适合您。
UEFI 考虑到了这些限定,并提供了传统模式(Legacy mode)。在该模式下,您可以像拥有 BIOS 固件一样运行所有内容。但请记住,英特尔已公布从 2020 年起将不再支持传统 BIOS。
以下是一个简化的表格,展示了UEFI和BIOS之间的主要对比效果:

请注意,这个表格是对UEFI和BIOS之间主要区别的简化概述,并未涵盖所有细节。在现实应用中,两者之间可能还存在其他差异和特性。
是时候进入正题了!
UEFI?
前面我们知道了由于传统BIOS的范围性,人们开发了一种新标准,称为UEFI(通常简称为“EFI”)。UEFI实验传统BIOS曾经实验过的类似使命(以及更多使命),但接口(标准,“API”)不同。
我们现在有了一个专用的分区,它足够大,可以包罗整个操作体系的引导加载步伐,因此我们不必将多个部分毗连在一起,而无需使用微小的引导扇区。
UEFI还为我们提供了网络引导、安全启动等安全功能。
UEFI 不是 BIOS
有时使用的术语“UEFI BIOS”是不正确的(纵然我的主板制造商华硕也使用它),因为 UEFI 和 BIOS 都是固件的子类型——即它们是独立、不同、独立的固件标准:

UEFI概念
同一可扩展固件接口(UEFI)是一种当代固件接口,它代替了个人盘算机上的传统BIOS(根本输入输出体系)。UEFI作为操作体系与盘算机硬件组件之间的关键纽带,促进了初始化过程,并为操作体系与体系固件之间的交互提供了标准化方式。
与旧版BIOS相比,UEFI提供了多项优势,包罗支持更大容量的存储设备、更快的启动速率、加强的安全功能和更友爱的用户界面。开发UEFI的主要动机之一是降服BIOS的范围性,并为固件开发提供一个更加灵活和可扩展的平台。

为了更好地理解UEFI,我们可以考虑一个涉及盘算机启动过程的例子。在配备UEFI固件的体系中,当盘算机通电时,启动过程开始。UEFI固件控制体系并启动加电自检(POST),这是一个诊断过程,用于检查硬件组件的完整性。POST成功完成后,UEFI固件会查找可启动设备。
在UEFI体系中,固件与UEFI启动管理器交互,后者是一个负责加载操作体系的软件组件。启动管理器会查阅UEFI启动变量,这些变量包罗有关可用启动选项及其优先级的信息。这些变量存储在非易失性存储器中,用户或体系管理员可以对其进行修改以自界说启动设置。
假设盘算机在固态硬盘(SSD)上安装了操作体系。UEFI固件在启动管理器的帮助下,定位SSD上EFI体系分区(ESP)中存储的UEFI引导加载步伐。UEFI引导加载步伐是一个小步伐,它相识文件体系并知道如何将操作体系内核加载到内存中。
一旦UEFI引导加载步伐加载了操作体系内核,控制权便转移给操作体系,并向用户出现用户界面。在整个过程中,UEFI促进了硬件与软件之间的通讯,确保了顺畅且高效的启动体验。
因此,UEFI是一种关键的固件接口,为固件开发提供了标准化和可扩展的框架,从而实现了性能提升、对大容量存储设备的支持以及加强的安全功能。从BIOS到UEFI的变化标记取体系固件发展的一次重大进步。
EFI 体系分区
作为 Windows 用户,您可能已经注意到有一个神秘的“体系保留”分区:

这是 ESP(EFI 体系分区)——一个用于启动符合 EFI 的体系的分区。
ESP 通常是一个采用 FAT32 格式化的分区,最小空间为 100MB,一些指南建议为 512MB。
该分区包罗 EFI 应用步伐,这些应用步伐通常位于本身的目录中。可能包罗多个 EFI 应用步伐,因为您可能安装了多个操作体系。在我的思维模型中,我将这些目录视为每个操作体系的“插槽”。
如果您想的话,可以使用根本的 Linux 内置工具(如

mkfs.fat -F 32)重新开始创建此分区。只需确保将分区类型设置为 EFI 体系即可!
幸运的是,ESP 并不神奇——它只是一个包罗文件的分区,并且某些文件路径具有特殊含义(如果未指示启动选择,则默认启动的 EFI 应用步伐)。
EFI 变量
EFI(Extensible Firmware Interface,可扩展固件接口)是当代盘算机体系中用来替换传统BIOS的一种新标准。在EFI的天下里,有一些特别的“变量”被存储在主板的非易失性随机访问存储器(NVRAM)中。这些变量就像是电脑的小记事本,存储着一些重要的设置和信息。
其中,有一个特别重要的变量叫做“默认启动项”(“BootCurrent”),它就像是一个指针或者地址,指向了另一个变量。这个被指向的变量呢,着实就是一个具体的启动项,里面包罗了要启动的EFI应用步伐(好比操作体系)的完整路径,就像是你手机上的某个APP的存储位置一样。
不但如此,这些启动项变量还很知心,它们还能额外存储一些参数,就像是你打开APP时可以设置的一些选项。对于Linux体系来说,有一个特别的EFI应用步伐叫做EFI stub,它可以直接从EFI情况启动Linux内核,而不需要传统的引导加载步伐(如GRUB)。在这个场景下,EFI变量里就会包罗Linux内核启动时需要的一些下令行参数,好比指定根文件体系所在的分区。而如果使用GRUB如许的引导加载步伐,这些参数就会写在GRUB的设置文件中,而不是EFI变量里。
最棒的是,这些EFI变量是可以从操作体系内部直接修改的,这意味着,如果你想改变启动次序或者添加新的启动项,不再需要像从前那样重启电脑,然后进入BIOS设置界面去操作了。你只需要在操作体系里找到相应的工具或下令,就可以轻松完成这些使命,大大简化了操作过程。
EFI 的启动过程

主板的固件根本上总是存储在闪存中(如许它就可以被升级)。EFI 变量的存储也需要闪存,因为如果它们不能被更改,那么它们就称不上是真正的“变量”。
EFI 变量的影响
让我们用更简朴的语言来解释关于EFI变量的一些关键点:
EFI变量是什么?
EFI(现在常被称为UEFI,即同一可扩展固件接口)变量是存储在盘算机中的小数据块,它们包罗了一些重要的设置和信息,好比启动时的设置参数、操作体系需要的特殊指令等。这些变量对于确保盘算机和操作体系可以或许顺利启动和运行非常重要。
为什么EFI变量会影响驱动器和新主板的兼容性?
当你把一个硬盘(我们称之为驱动器)从一台电脑换到另一台时,可能会遇到题目。这是因为每台电脑的主板(负责盘算机启动和硬件交互的焦点部件)上都有本身的EFI变量。这些变量里可能包罗了一些特定的设置或参数,是启动操作体系时必须的。如果新主板没有这些特定的设置,那么体系可能无法正常工作。
Linux EFI stub是个啥?
Linux EFI stub是一个特殊的启动方式,它允许Linux内核直接作为EFI应用步伐来启动,而不需要传统的启动加载器(如GRUB)。虽然这听起来很酷,但它需要一些额外的参数来告诉内核如何启动,这些参数就存储在EFI变量中。
你可能会想,为什么不把所有的EFI变量都放在驱动器上的一个地方(好比ESP)呢?如许换电脑时不是更方便吗?但现实上,如许做会有安全风险,因为驱动器可以被随意更换,如果它决定了盘算机的启动方式,那就可能被恶意利用。所以,EFI变量大部分还是存储在主板上的一个特殊区域(NVRAM),如许更安全。
不同的主板制造商可能会用不同的方式来存储EFI变量,这意味着它们的格式可能不同。对于大多数用户来说,这不是题目,因为操作体系和EFI固件会处理这些细节。但是,如果你在虚拟机或特殊情况中工作,并需要手动设置这些变量,那就可能会遇到贫苦,因为你需要知道如何与特定主板的EFI固件交互。
EFI变量是盘算机启动过程中的重要部分,它们包罗了启动体系所需的关键信息和设置。由于这些变量可能依赖于特定的主板和固件,所以在更换硬件或进行特殊设置时需要格外注意。对于大多数用户来说,这些变量是自动管理的,但相识它们的工作原理可以帮助你更好地理解息争决启动题目。
UEFI的架构
UEFI的计划是创建在几个关键概念之上的:
利用现有的“表格式”接口:为了节省大家在操作体系和固件上已经投入的时间和资源,UEFI采用了许多现有的标准。这些标准在支持特定处理器的平台上很常见。如果你想要你的平台符合UEFI的标准,那么你就需要实现这些标准。简朴来说,UEFI没有重新开始创造新的东西,而是把大家已经熟悉的、好用的东西整合了进来。(更多细节,你可以查看参考资料。)
体系分区:体系分区就像是一个特殊的区域,它有一个特别的文件体系。这个区域可以让不同的公司或组织安全地共享数据,同时满意不同的需求。有了这个体系分区,我们可以在不增长太多额外存储空间需求的情况下,让平台变得更加强大和灵活。
启动服务:启动服务就像是在启动电脑时提供的一些工具和接口,它们可以帮助我们更好地使用设备和体系功能。这些服务通过“句柄”和“协议”来与设备交互,如许我们就可以更容易地使用现有的BIOS代码,而不需要担心具体的实现细节。
运行时服务:这些服务是在电脑正常运行时提供的。它们确保操作体系可以轻松地访问和使用平台的根本硬件资源。这些服务被计划成非常基础且必要的,以确保操作体系的稳定运行。
下面的图表展示了UEFI的主要部分,以及它们与平台硬件和操作体系软件之间的关系。

本图展示了符合UEFI规范的体系各组件之间的交互,这些组件用于完成平台和操作体系的启动。
平台固件可以或许从体系分区中获取操作体系加载步伐映像。该规范支持多种大容量存储设备类型,包罗磁盘、CD-ROM和DVD,以及通过网络进行长途启动。通过可扩展的协议接口,可以添加其他启动媒体类型。
一旦启动,操作体系加载步伐将继续引导完整的操作体系。

第一段:UEFI让平台固件变得更加强大,方法是通过加载UEFI驱动步伐和应用步伐。一旦这些驱动步伐和应用步伐被加载,它们就可以使用UEFI提供的所有运行时和启动服务。这就像给你的电脑平台固件增长了很多新功能,而这些新功能都是按照UEFI的规则来运行的。你可以看看上面的启动次序图,它展示了这齐备是如何工作的。
第二段:UEFI还做了一件很酷的事变,它把操作体系加载步伐宁静台固件的启动菜单归并成了一个同一的平台固件菜单。如许,你就可以在这个菜单里选择任何支持UEFI启动服务的启动介质上的任何分区上的UEFI操作体系加载步伐。UEFI操作体系加载步伐还可以在用户界面上表现多个选项,让你有更多的选择。而且,如果你还想用老式的启动方式(好比从A盘或C盘启动),UEFI也支持在平台固件启动菜单中加入这些选项。
第三段:UEFI支持从包罗UEFI操作体系加载步伐或UEFI界说的体系分区的介质启动。如果你想从硬盘如许的块设备启动,那么UEFI要求必须有一个UEFI界说的体系分区。不外,UEFI并不会改变分区的第一个扇区,这意味着你可以创建一种既能在老式架构上启动,又能在UEFI平台上启动的介质。如许,无论你的电脑支持哪种启动方式,你都可以轻松地使用它。
都到这里了,那就再好好多聊聊启动。
UEFI启动

UEFI 包罗六个主要的启动步骤,这些步骤在平台的启动和初始化过程中都扮演着至关重要的脚色。所有这些步骤加在一起,我们通常称之为“平台初始化”(Platform Initialization,简称 PI)。
下面我会简要介绍每个阶段,希望能帮助您对这个过程有一个根本的相识。
DXE 和 RT 这两个阶段,对于初学者比较重要。
非常抱歉,我之前的翻译中可能存在一些不够准确的地方。让我再次实验,确保每个阶段的描述都更加准确:
安全阶段(SEC)这是UEFI启动流程的主要阶段,主要用于:初始化一个临时的内存存储区域,作为体系信任链的起点,并向Pre-EFI初始化(PEI)阶段提供必要的信息。这个信任链的起点确保了在平台初始化(PI)过程中实验的任何代码都颠末加密验证(即数字署名),从而创建一个“安全启动”的情况。
Pre-EFI初始化阶段(PEI)这是启动流程的第二阶段,它仅利用CPU当前的资源来调治Pre-EFI初始化模块(PEIM)。这些模块负责实验关键的启动操作初始化,如内存初始化,同时也允许将控制权通报给驱动步伐实验情况(DXE)。
驱动步伐实验情况(DXE)在DXE阶段,体系的大部分初始化工作都会发生。在PEI阶段,DXE操作所需的内存已经被分配和初始化。当控制权通报给DXE时,DXE调治器会被激活。调治器负责加载和实验硬件驱动步伐、运行时服务和任何操作体系启动所需的启动服务。
启动设备选择(BDS)一旦DXE调治器完成了所有DXE驱动步伐的实验,控制权就会通报给BDS。这个阶段负责初始化控制台设备和任何剩余的必须设备。然后,它会加载并实验选定的启动项,为瞬态体系加载(TSL)阶段做准备。
瞬态体系加载(TSL)在这个阶段,PI流程处于启动设备选择和将控制权移交给主操作体系之间的过渡阶段。此时,可能会调用一个应用步伐(如UEFI shell),或者(更常见的是)运行一个引导加载步伐来准备最终的操作体系情况。引导加载步伐通常负责通过调用ExitBootServices()来制止UEFI启动服务。但是,操作体系本身也可以实验这一操作,好比带有CONFIG_EFI_STUB的Linux内核。
运行时(RT)这是最后的阶段,也是操作体系接管体系的时刻。只管此时UEFI的启动服务已经不再可用,但UEFI的运行时服务仍然保留给操作体系使用,比方用于查询和写入NVRAM中的变量。
体系管理模式(SMM)SMM是一个与运行时阶段分开存在的模式,它可以在SMI(体系管理中断)被触发时进入。然而,在这个介绍中,我们不会深入讨论SMM。
UEFI 启动 Flow (Windos)

以下是Windows盘算机启动的次序阶段:
预启动(PreBoot)
盘算机的固件启动加电自检(POST),并加载固件设置。当检测到有用的体系磁盘时,此预启动过程竣事。固件读取主引导记载(MBR),然后启动Windows启动管理器。
Windows启动管理器
Windows启动管理器在Windows启动分区上查找并启动Windows加载步伐(Winload.exe)。
Windows操作体系加载步伐
加载启动Windows内核所必须的根本驱动步伐,然后内核开始运行。
Windows NT操作体系内核
内核将体系注册表设置单元和标记为BOOT_START的其他驱动步伐加载到内存中。
内核将控制权通报给会话管理器进程(Smss.exe),该进程初始化体系会话,并加载和启动未标记为BOOT_START的设备和驱动步伐。

从内核(ntoskrnl.exe)到实验LogonUi.exe(提示用户交互的进程)的Windows启动过程的简化版本。它被分为五个步骤。
加载操作体系内核
初始化内核
启动子体系
启动会话0
启动会话1
就不详细展开了。想相识,点个赞,下次咱们聊。
UEFI 启动 Flow (Linux)

你是否曾经好奇过,当你按下Linux机器的电源按钮时,背后发生了什么?
1️⃣ BIOS + UEFI
根本输入输出体系(BIOS)或同一可扩展固件接口(UEFI)是盘算机开机时首先运行的步伐,负责硬件的初始化以及从选定的启动设备加载引导加载步伐。
2️⃣ 主引导记载(Master Boot Loader, MBR)
MBR是硬盘的第一个扇区,包罗了用于加载操作体系引导加载步伐(如GRUB)的指令。
MBR(主引导记载)是硬盘的初始(主要)扇区,它标识了操作体系的位置,以完成启动过程。
MBR的位置取决于您的硬件,它可能位于/dev/hda或/dev/sda。
它是一个512字节的映像,包罗代码以及一个简短的分区表,这些都有助于加载/实验GRUB(引导加载步伐)。
3️⃣ 引导加载步伐(Boot Loader)
引导加载步伐(如GRUB)负责加载操作体系内核到内存中。它允许用户选择启动哪个操作体系(如果安装了多个的话)。
Linux有多个引导加载步伐,其中最常见的是GRUB和LILO,而GRUB2是最新版本之一。
当你启动盘算机时,通常首先看到的是GRand Unified Boot loader(GRUB)。
它由一个简朴的菜单构成,该菜单使用键盘表现选项,以便你选择要启动的内核(如果你安装了多个内核映像)。
在双体系启动时,GRUB2允许你选择要启动的操作体系。

4️⃣ 内核(Kernel)
内核是操作体系的焦点,负责管理硬件、提供根本服务(如进程调治、内存管理等),并作为用户步伐与硬件之间的桥梁。

内核完全控制你体系中的齐备,因此被称为操作体系的焦点。
内核是自解压的,并以压缩格式存储以节省空间。
一旦选定的内核被加载到内存中并开始实验,它会在实验任何有用使命之前先解压本身。
一旦由引导加载步伐加载,内核会挂载根文件体系并初始化/sbin/init步伐,该步伐通常被称为init。
5️⃣ 初始RAM磁盘-initramfs镜像
initramfs是一个在内核启动过程中被挂载为根文件体系的临时内存文件体系。它包罗了启动过程中内核所需的驱动步伐和脚本。
初始RAM磁盘是一个初始/临时的根文件体系,它在真正的根文件体系可用之前被挂载。
这个initramfs映像嵌入在内核中,并包罗挂载真正根文件体系所需的最小二进制文件、模块和步伐。
6️⃣ /sbin/init(也称为init)[父进程]
init是体系启动后运行的第一个用户空间步伐,它是所有其他用户空间进程的父进程。它负责启动体系上的其他进程,并根据设置文件(如/etc/inittab或systemd的设置)设置运行级别。
一旦加载,init是内核首先实验的下令之一。
这个步伐管理剩余的启动过程,并为用户设置情况。
根本上,在这个阶段,体系会实验在体系初始化期间所需的齐备操作:检查文件体系、设置时钟、初始化串行端口等。
除了启动体系外,init下令还有助于保持体系正常运行并正确关闭体系。
7️⃣ 使用Getty的下令行界面
Getty是一个用于打开文本登录会话的步伐。在体系启动后,它会为每个终端或虚拟控制台启动一个登录会话。
Getty是“get tty”(tty-电传打字机)的缩写,它是一个在主机上运行的UNIX步伐,用于管理物理或虚拟终端。
Getty会打开TTY行,设置它们的模式,打印登录提示符,获取用户名,然后为用户启动登录过程。
之后,用户在通过身份验证后可以开始使用体系。
8️⃣ systemd
systemd是当代Linux体系上的体系和服务管理器,负责初始化体系、管理体系服务、启动保卫进程等。它代替了传统的init体系,并提供了更丰富的功能和更好的性能。
上述提到的次序启动方法相称传统,属于UNIX的System V变体,之后发生了用systemd替换systemv这一有争议的事件。
一方面,SysVinit(传统的init体系-System V)遵照次序过程;另一方面,systemd则利用了当代多处理器/多核盘算机的并行处理能力。
注意:systemd在加载后由内核初始化,之后systemd启动所需的依赖项并处理其余部分。
systemd通过同时/并行启动多个进程来简化启动过程并缩短启动时间。
9️⃣ X Windows体系
X Windows体系(现在通常被称为X.org Server)是Linux上广泛使用的图形服务器,它负责表现图形用户界面(GUI)。在X Windows体系启动后,用户可以运行图形应用步伐,并通过鼠标和键盘与体系进行交互。
X Windows体系是一个开源的客户端-服务器体系,它实现了窗口化的图形用户界面(GUI)。
它也被称为X;它为GUI情况提供了根本布局,包罗在表现设备上绘制和移动窗口的能力,以及与鼠标和键盘通讯的能力。
Linux的启动过程非常灵活且不断改进,支持广泛的处理器和硬件平台。上述列出的所有内容并不肯定完全准确地描述了您机器的启动过程;有些阶段乃至可以通过一些调整来跳过。
到这里,你说我们这搞安全的不聊几句关于安全启动的,似乎说不外去。
UEFI安全启动
安全启动、Windows与密钥管理
UEFI(同一可扩展固件接口)规范焦点界说了一个称为安全启动的固件实验认证流程。作为行业标准,安全启动详细规定了平台固件如何管理证书、验证固件,以及操作体系如何与此验证过程进行交互。
安全启动基于公钥基础设施(PKI)流程,在允许任何模块实验前,先对其进行严酷认证。这些模块广泛包罗固件驱动步伐、选项ROM、磁盘上的UEFI驱动步伐、UEFI应用步伐或UEFI引导加载步伐。通过实验前的镜像认证机制,安全启动有用降低了如rootkit等预启动恶意软件攻击的风险。在Windows 8及更高版本中,微软依赖于UEFI安全启动作为其可信启动安全架构的关键构成部分,旨在为客户提升平台安全性。
对于Windows 8及更高版本的客户端PC,以及Windows Server 2016,安全启动是强制要求的,这一规定明确体现在Windows硬件兼容性要求中。
安全启动流程的工作原理简述如下(如图1所示):
固件启动组件:固件首先验证操作体系加载步伐(如Windows或其他受信任的操作体系)的可信度。
Windows启动组件:包罗BootMgr、WinLoad及Windows内核启动过程。这些组件会逐一验证各自组件的署名。任何未通过验证的组件将被阻止加载,并触发安全启动修复机制。
防病毒与反恶意软件软件初始化:此阶段会检查这些软件是否拥有微软颁发的特殊署名,以确保其为受信任的关键启动驱动步伐,并在启动过程中尽早启动。
关键启动驱动步伐初始化:WinLoad在实验安全启动验证时,会检查所有关键启动驱动步伐的署名。
其他操作体系初始化
Windows登录屏幕

UEFI安全启动的实施是微软自Windows 8.1以来引入的可信启动架构的重要一环。随着恶意软件漏洞利用技能的不断发展,将启动路径作为首选攻击向量的趋势日益显着。
由于恶意软件可以或许阻止防病毒产品完全加载,从而使其失效,因此这类攻击尤为难以防范。然而,通过Windows可信启动架构及其与安全启动共同创建的信任根,客户可以确保在操作体系本身加载之前,仅有颠末署名和认证的“已知良好”代码及引导加载步伐可以或许实验,从而有用防止启动路径中的恶意代码实验。
UEFI的资料
最后分享一点资料。资料太多,反而会选择困难症状,所以我就各推荐一个吧,用于体系学习、小部分相识、以及现实 操作。
文档
UEFI/2.10:https://uefi.org/specs/UEFI/2.10/02_Overview.html
实操

英特尔最初发布了原始EFI规范的开源实现,即EFI开发工具包(EDK)。在UEFI和PI的开发过程中,这个开源项目继续发展为EDK2。该项目标主要目标是针对固件开发职员开发、测试和调试UEFI驱动步伐、可选ROM和应用步伐。
推荐的开发工具的简短列表:
EDK2
首先是EDK2项目,它被描述为“一个当代的、功能丰富的、跨平台的固件开发情况,用于[www.uefi.org]的UEFI和PI规范。”EDK2项目由许多同样为UEFI规范做出贡献的同一批人(以及社区志愿者)开发和维护。
这非常有帮助,因为EDK2保证包罗最新的UEFI协议(假设您使用的是主分支)。除此之外,还有无数高质量的项目供您参考。一个例子是开放虚拟机固件(OVMF)。这是一个旨在为虚拟机提供UEFI支持的项目,它的文档非常齐备。
EDK2的一个主要缺点是第一次设置构建情况的过程——这是一个漫长而困难的过程,纵然他们有“开始使用EDK2”指南尽可能简化这个过程,对于新手来说仍然可能感到狐疑。
VisualUefi
VisualUefi项目旨在允许在Visual Studio内部进行EDK2开发。我们建议您开始开发时,使用EDK2下令行中的构建工具而不是这个项目,以让您熟悉平台。
此外,VisualUefi提供的头文件和库是完整EDK2库的一个子集,因此您可能会发现您需要的不是所有东西都容易获取。然而,与EDK2相比,它的设置要简朴得多,因此通常受到热衷于使用Visual Studio的用户的青睐。
调试
关于调试,有几个选项可供您选择,每个选项都有其优缺点。这些将在下面列出,您最喜好哪一个由您本身决定。在本系列的第二部分中,我们将向您展示如何调试一个示例驱动步伐,所以在此之前,您可能想要安装所有这些(或者一个也不安装!)以帮助您做出明智的决定:+ QEMU - 一个多平台模拟器(只管在Linux上最好),由于它是一个模拟器而不是虚拟机,因此提供了最好的调试设施。它的设置相称复杂,而且与它的同类相比,它也相称慢。+ VirtualBox - 一个好的多平台解决方案,除了由于非易失性随机存取存储器(NVRAM)仿原形称差劲而遭受内存丢失的题目。+ VMware - 提供良好的性能和正确工作的NVRAM仿真。如果客户机和主机都是Windows,它与WinDbg配合使用进行TSL和RT阶段的调试效果非常好。

BIOS 和 UEFI 刷机工具是用于更新、修复或修改盘算机主板固件的步伐。这些工具允许用户对 BIOS 或 UEFI 进行升级,以支持新硬件或解决兼容性题目。以下是 20 个常见的 BIOS 和 UEFI 刷机工具及其功能介绍和访问链接:
1. AFUWIN (AMI Firmware Update Utility)



  • 功能:由 AMI 提供的 BIOS/UEFI 革新工具,支持多种更新方式(下令行、Windows 情况)。
  • 使用:适用于 AMI BIOS 体系,支持 DOS 和 Windows 情况下的更新。
  • 链接:AFUWIN 下载
2. AFUDOS (AMI BIOS Update Utility for DOS)



  • 功能:用于在 DOS 情况下革新 AMI BIOS/UEFI 的工具,适合高级用户使用。
  • 使用:通过下令行方式革新 BIOS,适用于 AMI BIOS。
  • 链接:AFUDOS 下载
3. Flashrom



  • 功能:一个开源的跨平台固件革新工具,支持多种 BIOS 和 UEFI 芯片。兼容 Linux、Windows 和 macOS。
  • 使用:通过下令行接口,可以用于多种芯片的刷机,广泛应用于不同主板和固件。
  • 链接:Flashrom 官网
4. WinFlash (ASUS BIOS Update Utility)



  • 功能:ASUS 提供的 BIOS 革新工具,支持在 Windows 情况下直接更新主板 BIOS。
  • 使用:Windows 下的图形化界面,适合用户直接刷机,不需要进入 DOS。
  • 链接:WinFlash 下载
5. EZ Flash (ASUS)



  • 功能:ASUS 提供的 UEFI 内置刷机工具,支持从 USB 或网络更新 BIOS。
  • 使用:用户可通过主板的 UEFI 界面直接革新 BIOS,支持 FAT32 格式的 USB 驱动器。
  • 链接:ASUS EZ Flash 介绍
6. MSI Live Update



  • 功能:MSI 提供的用于 BIOS 更新和驱动步伐管理的 Windows 工具,支持一键更新。
  • 使用:在 Windows 情况下自动检测和更新 BIOS、驱动和固件。
  • 链接:MSI Live Update 下载
7. Gigabyte @BIOS



  • 功能:Gigabyte 提供的 BIOS 更新工具,允许用户从服务器下载并更新主板 BIOS。
  • 使用:支持从 Gigabyte 官方服务器自动下载 BIOS 固件,并在 Windows 下革新。
  • 链接:Gigabyte @BIOS 下载
8. Q-Flash (Gigabyte)



  • 功能:Gigabyte 主板的 BIOS 革新工具,集成在 BIOS/UEFI 内部,支持通过 USB 更新。
  • 使用:进入主板 BIOS,通过 UEFI 菜单中的 Q-Flash 选项更新 BIOS。
  • 链接:Q-Flash 介绍
9. Lenovo ThinkPad BIOS Update Utility



  • 功能:Lenovo 提供的用于 ThinkPad 设备 BIOS 革新的 Windows 工具。
  • 使用:用户可以直接从 Lenovo 官网下载最新的 BIOS 并通过 Windows 革新。
  • 链接:Lenovo BIOS Update Utility
10. Dell BIOS Update Utility



  • 功能:Dell 提供的 BIOS 革新工具,适用于 Windows 情况和开机菜单,支持通过 USB 驱动器更新。
  • 使用:可以从 Dell 网站下载最新 BIOS 更新工具并在 Windows 或启动情况中使用。
  • 链接:Dell BIOS Update Utility
11. HP BIOS Update Utility



  • 功能:HP 提供的用于更新和规复 BIOS 的工具,支持通过 USB 或 Windows 情况更新。
  • 使用:用户可以从 HP 官方网站下载 BIOS 更新工具,并直接刷入最新固件。
  • 链接:HP BIOS Update Utility
12. Acer BIOS Update Utility



  • 功能:Acer 提供的用于其条记本和台式机设备的 BIOS 更新工具。
  • 使用:通过 Acer 官方网站下载 BIOS 更新工具,支持 Windows 和 USB 更新。
  • 链接:Acer BIOS Update Utility
13. Intel FPT (Flash Programming Tool)



  • 功能:用于 Intel 芯片组的 BIOS 和固件更新工具,支持高级用户通过下令行更新。
  • 使用:适合开发者和高级用户,用于刷写主板的 BIOS 和 ME 固件。
  • 链接:Intel FPT 下载
14. Universal BIOS Backup Toolkit



  • 功能:一款用于备份 BIOS 固件的工具,便于在更新 BIOS 之前备份当前版本。
  • 使用:可以备份主板上的 BIOS 以便出现题目时进行规复。
  • 链接:Universal BIOS Backup Toolkit
15. Rufus



  • 功能:用于制作可启动的 USB 闪存驱动器的工具,常用于将 BIOS 革新工具加载到启动盘中。
  • 使用:创建一个包罗 BIOS 更新文件的启动 USB,适合 DOS 情况下的 BIOS 革新。
  • 链接:Rufus 官网
16. CH341A Programmer



  • 功能:硬件工具,配合软件用于 BIOS 芯片的物理刷写,支持从损坏的主板中规复 BIOS。
  • 使用:使用硬件读取并写入 BIOS 芯片,适合 BIOS 损坏的规复。
  • 链接:CH341A Programmer 下载
17. Phoenix WinPhlash



  • 功能:用于革新 Phoenix BIOS 的工具,支持 Windows 下更新。
  • 使用:通过 Windows 情况革新 Phoenix BIOS,适用于支持的主板。
  • 链接:Phoenix WinPhlash 下载
18. Aptio V UEFI Firmware Tool



  • 功能:用于编辑和刷写 AMI Aptio V UEFI 固件的工具,支持定制 BIOS 。
  • 使用:用于高级用户和开发者修改和更新 UEFI 固件。
  • 链接:Aptio V 官网
19. UEFITool



  • 功能:开源的 UEFI 固件工具,用于查看、编辑和提取 UEFI 文件。
  • 使用:支持提取和修改 UEFI 固件文件,适合开发者或高级用户使用。
  • 链接:UEFITool GitHub
20. BIOS Agent Plus



  • 功能:用于检测和更新 BIOS 的工具,支持自动检测当前 BIOS 版本并提供更新建议。
  • 使用:检测 BIOS 和驱动更新,适合初学者快速更新 BIOS。
  • 链接:BIOS Agent Plus 下载

以上列出的工具适用于不同的主板和 BIOS/UEFI 情况,有些工具专为特定品牌计划(如 ASUS、MSI、Gigabyte),而其他则是跨平台的通用工具(如 Flashrom)。根据你所使用的硬件和需求,选择合适的工具进行 BIOS 革新和维护。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表