当前位置: 首页 > news >正文

UEFI启动流程

UEFI启动共分为7个阶段,下面是一张比较经典的图

这里我们主要讨论下TSL和RT两个阶段,这个两个阶段在启动末期,属于较为重要的过程,在编写引导程序时,如果没有严格按照启动顺序进行启动,会出现各种各样的问题,而又在启动初期,调试手段相对比较匮乏,因此,充分理解这个两个阶段需要做的事情比较重要。

TSL阶段

操作系统加载前期,是指系统启动程序被加载到执行ExitBootService()函数之间的这段时间,这个阶段主要是依靠Boot Service实现,它主要提供以下功能:

1、image管理:包括加载、启动和退出等,并且加载过程中还需要对image中所包含的代码段、数据段等进行内存划分,特别需要注意每个段的权限各不相同,一般代码段只有读权限,数据段有读写、执行权限,因为涉及到安全规范,所以必须权限一定要设置正确;

2、protocol管理:安装与卸载protocol的服务,以及注册protocol通知函数的服务,这就是按需进行应用了,网上有很多参考的案例;

3、ExitBootServices:关键功能,执行此函数后,UEFI就把系统的控制权交出去了,交给了需要启动的操作系统,并且把之前自己创建的资源全部释放掉了。

RT阶段

该阶段是运行时阶段,主要功能如下所示:

1、时间服务:读取设定时间&

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《黑神话:悟空》到底是用什么语言开发的
  • 从0到1构建视频汇聚生态:EasyCVR视频汇聚平台流媒体协议支持的前瞻性布局
  • 依靠 VPN 生存——探索 VPN 后利用技术
  • 【Python】列表和元组
  • 两个独立的SpringBoot项目如何互相引用?
  • 20240824给飞凌OK3588-C的核心板刷Ubuntu22.04后适配SONY索尼的HDMI OUT的机芯8530
  • 【通俗易懂】限流、降级、熔断有什么区别?
  • C语言刷题日记(附详解)(2)
  • 防患未然:构建AIGC时代下开发团队应对突发技术故障与危机的全面策略
  • 代码随想录算法训练营day30 | 贪心算法 | 452.用最少数量的箭引爆气球、435.无重叠区间、763.划分字母区间
  • PostgreSQL SELECT 语句:深入解析与实例应用
  • vscode修改选中文字颜色及当前tab颜色
  • web前端之选项卡集合、动态添加类名、动态移除类名、动态添加样式、激活、间距、节流、tabBar
  • VS实用调试技巧
  • unoredered_mapunordered_set封装
  • JavaScript 如何正确处理 Unicode 编码问题!
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • css布局,左右固定中间自适应实现
  • Git学习与使用心得(1)—— 初始化
  • js中forEach回调同异步问题
  • SpiderData 2019年2月16日 DApp数据排行榜
  • supervisor 永不挂掉的进程 安装以及使用
  • Zsh 开发指南(第十四篇 文件读写)
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 大型网站性能监测、分析与优化常见问题QA
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端面试总结(at, md)
  • 区块链分支循环
  • 使用parted解决大于2T的磁盘分区
  • 数据仓库的几种建模方法
  • 责任链模式的两种实现
  • 智能合约Solidity教程-事件和日志(一)
  • hi-nginx-1.3.4编译安装
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #Linux(权限管理)
  • #pragma multi_compile #pragma shader_feature
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C语言)fgets与fputs函数详解
  • (十八)Flink CEP 详解
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转)IOS中获取各种文件的目录路径的方法
  • .bat批处理(六):替换字符串中匹配的子串
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .java 9 找不到符号_java找不到符号
  • .Net Core 微服务之Consul(二)-集群搭建
  • .net FrameWork简介,数组,枚举
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net/c# memcached 获取所有缓存键(keys)
  • .net的socket示例
  • .net反编译的九款神器
  • @Autowired 和 @Resource 区别的补充说明与示例
  • [ C++ ] STL---stack与queue
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell