什么是Slim Bootloader
Slim Bootloader是Intel推出的一款Bootloader,关于它的完整介绍可以在如下的网站找到:
可以认为它是Intel版的coreboot,在平台支持、安全、可扩展方面更偏向于x86平台。
Slim Bootloader跟其他的Bootloader一样,主要的作用当然是初始化硬件并加载OS。但是相比于其他的Bootloader,Slim Bootloader有如下的优点:
并且它支持各种常用的操作系统,而且还是开源的(使用BSD许可)。
Slim Bootloader的源代码可以在https://github.com/slimbootloader/slimbootloader下载到。
由于Slim Bootloader目前还在早期开发阶段,因此代码可能会因为更新而导致差异,请以实际下载到的代码为准。
本文后续提到的编译和运行都以在20181020下载到的版本为例,实际版本如下:
Slim Bootloader的编译
从上面的github下载到的代码结构如下:
可以看到其实跟EDK的结构很类似,下面介绍其中比较重要的部分:
关于上述的目录,还有一些额外的要求,以使得代码方便扩展和兼容
1. BootloaderCorePkg和PayloadPkg两者应该是独立的,互不相干。
2. PayloadPkg的代码不应该依赖于Platform或者Silicon。
3. PayloadPkg只应该依赖于BootloaderCommonPkg。
Windows下的编译
Windows下的编译需要准备如下的内容:
这里需要说明的是第一个和最后一个,而中间的几个在其它文章中都有说明,这里不再介绍。
cxFreeze是用来将Python脚本转换成Windows下的可执行文件的,这些可执行文件位于BaseTools\Bin\Win32目录下,默认源代码下是没有Win32这个目录的。
cxFreeze安装后的位置如下:
另外一个是openssl,Windows版本的openssl可以在http://gnuwin32.sourceforge.net/packages/openssl.htm下载到。
将下载到的压缩包中断bin目录放到C盘根目录下,并将bin重新命名为openssl,如下图所示:
由于没有实际的单板可以测试,所以这里只编译用于QEMU的Slim Bootloader用于测试,具体方法如下:
1. 进入源代码根目录,打开命令行窗口,运行如下的命令:
这里会先编译FSP(如果没有提前准备,这里会下载)。
关于FSP的介绍,可以参看BIOS/UEFI基础——FSP 。
编译完成后会将生成的文件放到如下的位置:
之后才正式开始编译Slim Bootloader,不过在此之前还是要先编译Win32下的工具(生成的工具位于BaseTools\Bin\Win32):
之后继续编译:
最后编译生成的二进制位于根目录下的Outputs目录:
Linux下的编译
暂不提供。
Slim Bootloader的使用
编译完成之后执行如下的命令:
qemu-system-x86_64 -machine q35 -m 256 -serial mon:stdio -boot order=d -pflash Outputs/qemu/SlimBootloader.bin
得到的结果如下:
注意在此之前需要已经安装了QEMU。
由于没有实际的系统可以启动所以只能看到如下的界面,但是Slim Bootloader算是正常启动了。