UEFI启动共分为7个阶段,下面是一张比较经典的图
这里我们主要讨论下TSL和RT两个阶段,这个两个阶段在启动末期,属于较为重要的过程,在编写引导程序时,如果没有严格按照启动顺序进行启动,会出现各种各样的问题,而又在启动初期,调试手段相对比较匮乏,因此,充分理解这个两个阶段需要做的事情比较重要。
TSL阶段
操作系统加载前期,是指系统启动程序被加载到执行ExitBootService()函数之间的这段时间,这个阶段主要是依靠Boot Service实现,它主要提供以下功能:
1、image管理:包括加载、启动和退出等,并且加载过程中还需要对image中所包含的代码段、数据段等进行内存划分,特别需要注意每个段的权限各不相同,一般代码段只有读权限,数据段有读写、执行权限,因为涉及到安全规范,所以必须权限一定要设置正确;
2、protocol管理:安装与卸载protocol的服务,以及注册protocol通知函数的服务,这就是按需进行应用了,网上有很多参考的案例;