-
2021-07-17 04:40:45
引导是计算机开始输入时常采用的一种手段。计算机启动后,由设备来实现少量指令和数据的输入,然后由它们再输入其他程序,这种过程称为引导。微型计算机中的引导程序可将用户通过键盘打入的程序及数据引导输入到随机存储器中。
简介引导程序(英语:boot loader)位于电脑或其他计算机应用上,是指引导操作系统的程序。引导程序启动方式及程序视应用机型种类而不同。例如在普通的个人电脑上,引导程序通常分为两部分:第一阶段引导程序位于主引导记录(MBR),用以引导位于某个分区上的第二阶段引导程序,如NTLDR、BOOTMGR和GNU GRUB等。
BIOS引导完成后,boot loader就接手初始化硬件设备、创建存储器空间的映射,以便为操作系统内核准备好正确的软硬件环境。
简单的boot loader的虚拟汇编码,如其后的八个指令:
第一:将P寄存器的值设为8
第二:检查纸带(paper tape)读取器,是否已经可以进行读取
第三:如果还不能进行读取,跳至1
第四:从纸带读取器,读取一byte至累加器
第五:如为带子结尾,跳至8
第六:将寄存器的值,存储至P寄存器中的数值所指定的地址
第七:增加P寄存器的值
第八:跳至1
但是随着计算机操作系统越来越复杂,位于主引导记录的空间已经放不下引导操作系统的代码,于是就有了第二阶段的引导程序,而MBR中代码的功能也从直接引导操作系统变为了引导第二阶段的引导程序。对于UEFI系统,已由EFI应用程序(即EFI分区中的.efi文件)取代MBR和PBR,UEFI会加载引导程序的.efi文件,再由引导程序加载操作系统。MBR和PBR程序通常是用汇编语言编写的,会调用BIOS中断调用;而.efi文件则是PE格式的文件,可用C语言编写。
在计算机中, 引导或者引导程序是计算控制系统的一个初始化过程。引导过程可以使“硬引导”,如:开机通电后硬件诊断;也可以使“软引导”,此时会跳过开机自启。一些系统中软启动过程中,RAM可以不清零。软启动和硬启动都可以通过硬件发起,如按下电源开关;也可以通过软件命令来进行。当正常、有效的运行环境达到后,启动完成。引导装载程序是计算机开机自检完成后装载操作系统或者其他系统软件的计算机程序。自检完成后运行引导装载程序,然后再加载并运行软件。引导装载程序可以从永存体(硬盘)装载到主内存中。一些老计算机中,引导装载程序可以从打孔卡、穿孔纸带、或者磁带中加载到主内存中。启动装载程序加载且执行完成启动的程序。和POST程序相似,启动装置代码可以存储在永久存储体位置中,也可以为硬连线的形式。 当代通用计算机中,启动过程通常包含开机自检、定位以及初始化外围设备、然后找到、加载、并开始一个操作系统。睡眠和休眠过程不包含启动。一些嵌入式系统不要求可察的启动序列,可以直接运行存储在ROM中的可运行程序。所有计算机系统都是状态机,只有重启才可能返回到初始状态。 引导在英文中为"boot",是bootstrap的缩写,源自于短语"pull oneself up by one's bootstraps",即"靠自己振作起来"。如果大部分软件需要通过其他已运行的程序加载到计算机中,则必须存在一个将初始软件加载到计算机中的机制。 各种类型的只读内存可以解决此类的矛盾体——允许计算机带有可被擦除的启动程序。随着ROM容量的变大,更加精细的启动程序得以实现。1
第一台商业计算机早期可编程商业计算机,如UNIVAC I和IBM 701,会包含执行完整的输入输出操作的指令。相同的硬件逻辑可以被用来加载穿孔卡片的内容,或者其他输入媒体,如磁鼓或者磁带,这些引导程序可以通过按键启动。IBM701 计算机拥有一个 "Load" 按钮,此按钮可以将打孔卡片的前 36个bit字读入到主存中。左18-bit 半字被视为指令而执行,通常用来将额外的字读入到内存中。随后被加载的引导程序被执行,反过来无需更多地人为操作从媒介中加载更大的程序到内存中。随后计算机跳转到内存位置001,读取存储的第一个指令。第一条指令一般是相同的:将前80个内存位置的信息移到一个汇集区域(打孔卡片2,3,4...)。一旦信息被移动到这些区域后,机器跳转到080位置(读取一个卡片),然后下一个卡片将被读取,并处理相关信息。 同期的其他IBM计算机有着相似的特性。IBM1401系统使用读卡器从打孔卡片中加载一个程序。打孔卡片中存储的80个字符被读入到内存地址001~080。2
个人电脑启动设备启动设备(英语:boot device)是指操作系统可被从其上加载的设备。现代计算机的UEFI和BIOS都支持从多种设备中启动,如:硬盘(装有MBR或者GPT引导)、光驱、USB大容量存储设备(U盘、SD卡等),或者从网卡启动(使用PXE)。
通常,固件(UEFI 和 BIOS)都会允许用户设置启动顺序(英语:boot order)。如果将启动顺序设为“第一:DVD 驱动器;第二:硬盘驱动器”,固件会先尝试从 DVD 驱动器启动,如果失败(比如驱动器中没有 DVD)则会再尝试从本地的硬盘驱动器启动。
假设有一台 PC,硬盘上装有Windows 10,用户可以设置启动顺序为上述顺序,然后插入LinuxLive CD,这样就可以直接试用Linux。这样的过程就是一种双重引导,即计算机加电自检(POST)后允许用户选择所用的操作系统。这个例子中用户是通过 CD 的插入、移除来选择操作系统的,更常见的情况是直接使用键盘从BIOS或UEFI的引导菜单(英语:boot menu)中选择,引导菜单通常可以通过在 POST 时按Delete或F11进入。2
智能手机现代的智能手机具备操作系统,系统在启动之前需要通过boot loader启动,手机启动的时候基带执行初始化,然后引导系统内核,直到系统启动。智能手机生产厂商通常在出厂时锁定了手机的boot loader,以防止用户误操作损坏了系统文件造成手机功能异常,部分厂商会给开发者或普通用户发放boot loader解锁码,这通常需要步骤众多的申请,锁定boot loader能部分有效阻止恶意程序对手机造成的破坏,部分用户或开发者会通过解锁boot oader以获得更多的功能和权限,这通常会带来使用风险。2
本词条内容贡献者为:
何星 - 副教授 - 上海交通大学
更多相关内容 -
从开机到进入操作系统的引导过程详解
2021-01-20 14:50:41引导过程详解 ① 第一步,开机直接访问BIOS ROM的0xFFFF0。 开机以后,CS寄存器置为0xFFFF,IP寄存器置为0x0000。这样一来,CPU会要求访问地址为0xFFFF0的这个地方。这个地址实际上不是内存的地址,它被 地址... -
windows的引导程序
2018-07-19 18:18:39一般用windows的默认安装的引导程序即可,但是因为一个硬盘上可能有多个不同的系统(windows,linux,mac等),而windows的引导程序只能引导windows系列,所以都会有grub这样的可以识别多种系统的通用型的引导程序。... -
一个UEFI引导程序的实现.pdf
2021-10-16 14:48:50一个UEFI引导程序的实现文字版 一个UEFI引导程序的实现文字版 一个UEFI引导程序的实现文字版 -
dotnetinstaller:广泛用于MS Windows的通用安装程序引导程序
2021-04-29 10:08:00dotNetInstaller安装程序引导程序 dotNetInstaller是适用于Microsoft Windows XP,2003,Vista,2008、7、8、2012、8.1、10、2016和2019的广泛使用的通用设置引导程序。 建置状态 除错 释放 必需品 下载版本3.1.415... -
引导程序:学习引导程序
2021-02-22 04:35:56引导程序:学习引导程序 -
Linux操作系统下GRUB引导过程及原理
2020-08-19 07:49:55文章简单介绍了Linux操作系统下GRUB的引导过程及原理 -
stm32-dfu-bootloader:面向STM32F103的DFU引导程序仅4KB
2021-05-27 16:29:58STM32F103 DFU引导程序 这是用于STM32F103的微型引导程序(小于4KB)(尽管它可能适用于类似的设备)。 它使用户可以使用任意有效载荷通过USB刷新设备。 它具有一些最小的有效负载检查功能,以确保在启动应用程序... -
syslinux加载引导程序Linux系统引导工具v6.02官方英文版
2019-08-05 02:48:29SysLinux是一个Linux系统引导工具,它可以创建从MS DOS启动的Linux启动盘或Linux恢复盘。它安装很简单,一旦安装创建好之后,SysLinux软盘就可以操控标准的MS DOS工具。它占用的空间也很小,只需要7k的MS DOS空间或... -
Arduino 一次性烧录引导程序和用户程序的方法-附件资源
2021-03-05 15:17:10Arduino 一次性烧录引导程序和用户程序的方法-附件资源 -
UEFI引导过程
2022-03-24 09:33:29EFI引导 最近遇到的很多问题都和UEFI启动,调研了下UEFI的启动流程 一般认为,UEFI由以下几个部分组成: BIOS自检 Pown On 阶段 这一阶段从上电开始到屏幕出现信息结束,也就是所谓的激活电源阶段。主板上的...EFI引导
最近遇到的很多问题都和UEFI启动有关,调研了下UEFI的启动流程
一般认为,UEFI由以下几个部分组成:
BIOS自检
Pown On 阶段 这一阶段从上电开始到屏幕出现信息结束,也就是所谓的激活电源阶段。主板上的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了这一阶段的主要任务是校验CMOS中的内容是否正确、检查主机上某些硬件的状态以确定下一步的自检,因此,用户无法在屏幕上看到BIOS信息(要等硬件确认后才激活VGA) ,若这个阶段出现错误一般都是致命的(通常为黑屏),只能通过喇叭声和故障灯来判断错误类型。这个阶段只是检查系统上都有哪些设备,并不初始化。系统BIOS所在的ROM是被设计成CPU可直接寻址的,而且地址范围也是固定的,从F0000H至FFFFFH共64KB。
各厂家的BIOS程序不尽相同,但基本都是完成POST自检及本地设备的枚举和初始化,包括对硬件执行一系列的测试,用来检测现在都有什么设备以及这些设备是否能正常工作,在这个阶段中,会显示一些信息,例如BIOS版本号等;初始化硬件设备,这个阶段在现代基于PCI的体系结构中相当重要,因为它可以保证所有的硬件设备操作不会引起IRQ线与I/O端口的冲突,在本阶段的最后,会显示系统中所安装的所有PCI设备的一个列表等。在这个阶段如果是热重启,那L1、L2内存就不需要重新初始化,来加快启动速度。
BIOS自检和初始化完成后,开始执行BIOS引导程序。由于系统BIOS空间只有64KB大小,把Linux内核放在这个空间里让BIOS引导程序直接引导是不可能的,只能把内核放在硬盘里(或其他设备,如USB或网络上, BIOS根据启动顺序的设置依次查找),然后再从硬盘里引导Linux内核。但是,这时系统还处于实模式中,寻址能力只有1MB,没有硬盘上的文件系统等信息,不会直接的引导整个Linux内核,而是通过先载入一个引导装入程序,然后由这个引导装入程序来引导Linux内核,本文主要介绍EFI引导。
安全验证阶段(SEC)
以临时RAM初始化为边界,SEC阶段又分为两个部分:临时RAM生效之前称为Reset Vector阶段,临时RAM生效后调用SEC入口函数从而进入SEC功能区、其中Reset Vector的执行流程如下:
加电–>进入固件入口–>从实模式转换到32位平坦模式(包含模式)–>定位固件中的BFV–>定位BFV中的SEC映像–>若是64位系统,从32位转换到64位模式–>调用SEC入口函数–>PEI入口函数
系统运行在SEC阶段时,仅CPU和CPU内部资源被初始化,各种外部设备和内存都还没被初始化,因而需要一些临时RAM区域,用于代码和数据的存取(SEC最后及PEI阶段为C语言环境,C语言中的局部变量需要堆栈,这一步是为后续C语言环境准备好堆栈。一句话,C语言是基于栈的程序设计),我们称之为临时RAM,以示与内存的区别。这些RAM只能位于CPU内部。最常用的临时RAM是Cache,当Cache被配置为no-eviction模式时,可以作为内存使用,读命中时返回Cache中的数据,读缺失时不会向主存发出缺页事件;写命中时将数据写入Cache中,写缺失时不会向主存发出缺失事件,这种技术被称为CAS。
UEFI 系统开机或重启进入 SEC 阶段,它执行以下四种任务:
- **接收并处理系统启动和重启信号:**系统加电信号、系统重启信号、系统运行过程中的严重异常信号。
- **初始化临时存储区域:**在 SEC 阶段时,仅 CPU 和其内部(SOC)资源被初始化,外围设备和内存均为初始化,因此需要临时 RAM 区域。临时 RAM 初始化之后才能进入 SEC 的入口函数。
- **作为可信系统的根:**SEC 能被系统信任,之后的各个阶段才有被信任的基础。
- **传递系统参数给下一阶段(PEI):**需将如下信息作为参数传递给 PEI 的入口函数。
在进入EFI前会将传递系统参数给PEI阶段:SEC阶段的一切工作都是为PEI阶段做准备,最终要把控制权交给PEI阶段,同时要将现阶段的成果汇报给PEI。汇报的手段就是将如下信息作为参数传递给PEI的入口函数:
-
系统当前状态,PEI可以根据这些状态判断系统的健康状况;
-
可启动固件(Boot Firmware Volume,BFV)的地址和大小;
-
临时RAM区域的地址和大小;
-
栈的地址和大小;
Pre-EFI初始化模块(PEI)
Pre-EFI初始化程序在系统开机的时候最先得到执行,它负责最初的CPU,芯片组及主存的初始化工作,比较重要的是MMU芯片,负责内存虚拟化技术,这个阶段内存未初始化,使用L1、L2作为临时内存,EI阶段对系统的初始化主要是由PEIM完成的(CPU初始化、Chipset初始化、内存控制器初始化、IO控制器初始化、内存初始化等功能)。每个PEIM是一个独立模块,模块的入口函数传入两个参数,
FileHandle
和PeiServices
。通过PEIServices
,PEIM可以使用PEI阶段提供的系统服务,通过这些服务,PEIM可以访问PEI Core
。PEIM之间通过PPI(PEIM-to-PEIM Interface)完成。PEI阶段主要工作为:- 加载定位PEIM
- 提供PEIM之间的通信方式
- 为后续阶段提供资源和数据
列如
Pcdpeim
的作用是构建pcd database
并生成PPI,PlatformPei
则是用来平台设备驱动匹配,此外PEI阶段还会初始化做够大的RAM线性内存供DXE阶段使用MemoryInit
则是用来初始化内存。 在PEI阶段对总线进行初初始化,并设置好ddr频率,并将内存初始化完成。
随后开启MMU功能内存初始化完成,当内存初始化后,系统会发生栈切换并重新进入PeiCore,重新进入到PeiCore后使用的内存是我们熟悉的内存。初始化芯片组并通过
DxeIpl
进入DXE,开始枚举UEFI驱动器。PEI 阶段执行流程 :
PEI入口–>初始化PEI Core Services–>Dispatch PEIM(CPU,Chipset,Memory,IO等的初始化)–>准备HOB列表,利用DXEIPL PPI进入DXE–>DXE入口函数
UEFI驱动程序执行环境(DXE)
从 DXEIPL进入DXE的核心服务DXECore开始加载UEFI的驱动程序执行环境(DXE)DXE阶段执行大部分系统的初始化工作。当DXE被加载运行时,系统便具有了枚举并加载其他UEFI驱动程序的能力。DXE枚举并加载各种总线(包括PCI、SATA、USB、ISA)及硬件的UEFI驱动程序。
DXe分为两个阶段
- **DXE 内核(Dxecore):**负责 DXE 基础服务和执行流程。
- **DXE 派遣器(pcddxe):**负责调度执行 DXE 驱动,初始化系统设备。
PEI阶段通过构建HOB数据,把系统相关的信息传递给DXE阶段,包括但不限于:PEI阶段的内存申请记录、闪存卷(FV)信息、可用内存资源信息、DXE模块数据。
DXE阶段主要使用的几类HOB数据:
- 可用内存资源信息,类型为EFI_HOB_TYPE_RESOURCE_DESCRIPTOR,用于初始化内存申请与回收服务,提供申请和回收内存的方法
- DXE模块数据,用于初始化镜像服务,提供加载、解析和执行文件的方法
- 闪存卷信息,FlashVolume,对每个闪存卷建立一个PROTOCOL用于读取数据。所有的驱动数据从这里面读取,然后调度执行。
随后加载
smbiosDxe
将smbios
表转换为系统表[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CvoS08q8-1648085581151)(img/image-20220323160024795.png)]
dxe过程中加载的模块含义 Dispatcher/ DXE调度器 DxeMain/ DXE阶段入口函数 Event/ 异步事件机制 FwVol/ 闪存文件系统FFS FwVolBlock/ 闪存的块操作 Gcd/ 全局配置数据库 Hand/ 句柄Handle Image/ 镜像文件服务,加载、解析和执行 Library/ 库函数,三个与lock相关的操作 Mem/ 内存服务,申请和释放 Misc/ 其他内容,看门狗、 SectionExtrantion/ DxeCore.uni 字符串数据 DxeCoreExtra.uni 字符串数据 DxeMain.h 头文件 DxeMain.inf 模块信息文件
在Dxe过程中会加载异步事件服务,所以事件可以并发执行,DXE驱动之间通过Protocol通信,Protocol是一种特殊的结构体,每个Protocol都有一个对应的GUID,利用BootServices的OpenProtocol(HandleProtocol或LocateProtocol),并根据GUID来打开对应的Protocol,进而使用这个Protocol提供的服务。DXE框架如下:
- 启动服务Boot Services
- 内存服务 Memory
- 异步事件服务 Event Timer TPL
- 镜像服务 Image
- 句柄和协议服务 Handle and Protocol
- 运行时服务 Runtime Services
- 变量服务 Variable
当所有的DXE Drivers都执行完成后,系统完成初始化,DXE通过EFI_BDS_ARCH_PROTOCOL找到BDS并调用BDS的入口函数,从而进入到BDS阶段Dxe执行流程如下。
执行启动策略阶段(BDS)
BDS阶段顾名思义,主要功能是执行启动策略,BIOS在这一阶段引导操作系统并将控制权交给操作系统。
-
初始化控制台设备(ConsoleIn/ConsoleOut,USB/PS2键盘鼠标,VGA等)
-
加载必要的设备驱动(PCI枚举动作在这一阶段被执行)
-
根据系统设置加载和执行启动项
如果加载启动项失败,系统将重新执行 DXE dispatcher 来加载更多的驱动,然后重新尝试加载启动项。
单所有设备加载完BIOS开始引导操作系统,将控制权转交给操作系统
TSL阶段
TSL(Transient System Load)是操作系统加载器(OS Loader)执行的第一阶段。该阶段内 OS Loader 作为 UEFI 的应用程序运行,系统资源仍由 UEFI 内核控制,UEFI shell和grub就是在这个阶段。
RT 阶段
RT(Run Time)阶段,系统的控制权从 UEFI 内核转到 OS Loader,UEFI 占用的各种资源被回收到 OS Loader。UEFI内核开始将控制权转交给操作系统内核。
TSL 阶段的目的是为 OS Loader 准备执行环境,具备操作系统的雏形,UEFI Shell 是这个檩式系统的人机交互界面,正常情况下不会进入。通过BOOT.efi引导系统
-
基于STM32微控制器引导程序的串口通讯协议应用手册_zh.zip
2020-03-16 18:17:52基于STM32微控制器引导程序的串口通讯协议应用手册 中文版 第5版 1.08M STM32微控制器内嵌启动代码使用的USART协议 (USART protocol used in the STM32™ bootloader) -
康佳rtd2995D平台烧录软件及引导程序.rar
2019-09-04 21:04:48软件介绍: ...dvrboot.exe.bin则是相应的引导程序,将引导程序刷到电视存储器中可以修复康佳电视无法升级等问题。这个只是刷机软件,还需要有编程器配合使用,在Option上点击选择编程器所使用的端口。 -
bootloader:实验性的纯Rust x86引导程序
2021-05-12 03:37:42引导程序 实验性x86_64引导程序,可在BIOS和UEFI系统上使用。 用Rust和一些内联汇编编写,可在所有平台上构建,而没有其他构建时依赖性(只是一些rustup组件)。 要求 您需要一个带有llvm-tools-preview组件的每晚... -
两类DSP芯片的引导过程分析
2021-02-03 18:40:33本文希望通过对C40和C5402两种芯片系统引导的描述使大家了解设计DSP系列引导的步骤,能够利用DSP设计自己的设备。 1C40和C5402的系统引导机理 TI公司的每一种DSP产品,都为用户设计了多种系统的引导方式,如串口、... -
VS2019_社区版 安装引导程序
2022-01-25 19:14:56Visual Studio 2019 community 安装引导程序,确定资源,在官网打不开,可以使用这个资源。我一直在使用。 -
Windows引导过程(BIOS,UEFI)
2022-03-16 14:07:35通电后CPU首先执行的是主板引导程序,主板引导程序可分为BIOS和UEFI。BIOS是最早的方案,搭配MBR分区使用,BIOS逐渐被UEFI代替,UEFI一般搭配GPT分区使用,所以引导过程会有两种情况: 1.UEFI + GPT 2.BIOS + MBR ...通电后CPU首先执行的是主板引导程序,主板引导程序可分为BIOS和UEFI。BIOS是最早的方案,搭配MBR分区使用,BIOS逐渐被UEFI代替,UEFI一般搭配GPT分区使用,所以引导过程会有两种情况:
1.UEFI + GPT
2.BIOS + MBR如何查看自己的计算机是什么引导方式:在“此电脑”上右键选择“管理”,弹出“计算机管理”选择“磁盘管理”,如果能找到一个“EFI系统分区”,那么就是UEFI引导方式。
UEFI
UEFI以灵活扩展、引导更省时等特性,成为了BIOS的代替方案
UEFI一般搭配GPT分区技术使用,虽然也可以搭配MBR,但是由于MBR磁盘容量最大只能是2TB,所以默认都是使用GPT分区技术,GPT可以做到:
1.支持容量超过2TB的磁盘
2.使用16字节的GUID标识分区类型,不容易冲突
3.理论上分区数目不限制(受限于Windows只能最多识别128个分区)
4.分区容量几乎没有限制
5.提供CRC检验,检测数据损坏
6.备份分区表,提高可靠性
引导流程:
通电-->执行UEFI-->查找EFI分区-->执行bootmgfw.efi-->BCD-->执行winload.efi-->加载内核-->系统初始化1.按下电源键,电源向主板以及其他设备供电,刚开始电压不稳,主板会持续发送RESET信号给CPU,CPU执行初始化。当电压稳定后,主板停止发送RESET信号,CPU开始执行指令;
2.CPU读取UEFI指令,执行UEFI初始化,执行其他设备的初始化;
3.查找EFI分区,EFI分区不需要一定是第一个分区;
4.加载\EFI\Boot\bootx64.efi;
5.bootmgfw,efi会读取BCD文件,BCD是一个数据库文件,如果包含多个系统,信息会包含在BCD中,通过显示一种系统列表供用户选择;
6.BCD中包含每个系统的引导文件路径,Windows的是\Windows\System32\winload.efi,加载到内存中并执行;
7.winload.efi读取\Windows\bootstat.dat文件,有需要则显示引导菜单,比如安全引导等等。将CPU执行权交给内核程序;
8.内核程序执行系统初始化。
BIOS
BIOS(Basic Input Output System)是最早的引导方案并使用了相当长的一段时间,所以在Win8、Win7、WinXP以及更早的版本都能找到BIOS的引导存在。BIOS只支持MBR分区技术,所以GPT并不适合BIOS。
MBR,中文名为主引导记录,是一段引导代码,在硬盘分区中不以文件形式存在。它只能被配置在MBR格式的分区表中,当MBR损坏时,开机过程会卡在某个黑屏报错环节,但是可以通过一些磁盘分区工具修复MBR
MBR分区表:
仅支持4个主分区,且必须设置一个激活主分区用于存放bootmgr或ntldr文件,以及bcd文件,用于启动系统。
最大支持到2T容量的单分区(注意不是单块硬盘)。如果你有一块3T容量的硬盘,可以通过分区工具将硬盘分为2个区,比如一个2T,另一个1T,那么
MBR分区表也可以识别。
兼容性好,不仅支持全系列windows系统启动引导,还全面支持linux等其他内核的系统。
引导流程:通电-->执行BIOS-->记载MBR-->查找活动分区-->加载PBR-->加载bootmar.exe-->加载winload.exe-->加载内核-->系统初始化1.上电并稳定后,CPU执行地址0xFFFF0h处指令,此处为BIOS程序;
2.BIOS进行硬件自检,没有问题后加载硬盘的第一个扇区到内存0x7c00h处,第一个扇区为MBR(Master
Boot Record),MBR包含执行程序和分区表;
3.CPU开始执行MBR程序,查找第一个活动分区,把活动分区的第一个扇区加载到内存中,活动分区第一个扇区为PBR(Partition Boot Record);
4.CPU开始执行PBR,第一个指令就是跳过BPB(BIOS Parameter Block)到可执行代码处;BPB包含比较多参数,有族的大小、MFT记录大小、MFT位置等,用于读取NTFS文件;
5.PBR读取VBR(Volume BootRecord,占用分区开始的16扇区)剩余的15扇区到内存中;接着CPU跳转到0x07C0:027A处,执行BOOTMGR代码(第二个扇区中);
6.开始寻找bootmgr.exe,找不到则寻找ntldr.exe(win vista之前的系统);
7.CPU加载并跳转到bootmgr.exe处执行,读取BCD文件,如果含有多个系统,则列举显示供用户选择;
8.选择的是Windows则读取winload.exe文件到内存中,CPU跳转到winload.exe处执行,读取文件\windows\bootstat.dat,,有需要则显示引导菜单,比如安全引导等等;接着加载内核程序Ntoskrnl.exe,相关辅助HAL.dll、CI.dll、PSSHED.dll、BootVID.dll,把CPU执行权交给内核程序;
9.内核程序执行系统初始化。
BIOS引导更多的是通过MBR去引导系统,UEFI则主导整个引导过程 -
vivi系统引导程序的网络功能扩展.pdf
2020-03-01 11:35:16vivi系统引导程序的网络功能扩展 vivi系统引导程序的网络功能扩展 vivi系统引导程序的网络功能扩展 vivi系统引导程序的网络功能扩展 vivi系统引导程序的网络功能扩展 vivi系统引导程序的网络功能扩展 -
348mboot烧录工具及引导程序.rar
2020-02-25 11:28:56348mboot烧录工具及引导程序 康佳MSD6A348平台引导升级