UEFI开发EDK2环境搭建(Ubuntu - Linux X86_64)
如果有误,希望能在评论区指出。文章语法上的问题也可以。
UEFI是什么?
很多同学都对 UEFI 有一个误解,“ UEFI就是 BIOS 和传统 BIOS 几乎无区别” ,“ UEFI 是系统引导方式”。
UEFI 全称 Unified Extensible Firmware Interface (统一可扩展固件接口),UEFI在功能上更接近于操作系统,甚至 NVMe 组织将 UEFI 和诸如 Windos 、 Linux 等操作系统划为一“类”。厂商将其称为 “BIOS” 是为了便于用户理解。
开发系统环境的选择——Linux
这里笔者推荐使用Linux,主要理由如下
1.微软Windows环境搭建较麻烦,如果是EDK不支持的VS版本需要手动配置很多环境变量,EDK 2(一个全面的UEFI开发环境,相较于其他EFI环境,最亮的特点就是支持ARM平台)更新适配Windows过慢;
2.Windows支持的GNU工具很多都是老掉牙的版本[待证实];
3.Linux基础工具安装便捷;
4.Linux下EDK 2的问题更易于排除。
以Ubuntu-21.10为例:
虚拟机寻址会受到限制,由虚拟机平台提供相应的优化,例如VMware只提供给我们256MB自由发挥。UEFI 标准规定的2GB以后的空间载入系统加载器,256MB远远不足我们使用来开发标准UEFI程序。所属 Windows 的 UEFI 程序并未按照UEFI规范编写,因为 Windows 支持仅有2GB的设备。
写这篇文章的原因:
1.市面上的教程都不是最新版本的,在实践过程中会难免有不同,甚至是不适用。(本文章作于2021年末 2022年初)
2.多数问题的排除与解决较难
3.国内相关文章是有,不过他们不是复制的就是抄书,基本上对于GCC11环境无助
4.写这篇文章的主要目的还是希望能帮助其他人输入build就能看见Done(EDK 2编译成功的标准)
最好是在实体机上进行测试参考文章