EDK II的开发环境搭建(Windows系统)

  • 一、搭建前的准备工作
  • 二、软件安装
    • 1、安装VS2019 社区版
    • 2、安装Python
    • 3、安装Git
    • 4、安装Nasm
    • 5、安装IASL
    • 6、安装Qemu
  • 三、 下载EDK2的源码
    • 1、 下载edk2的源码
    • 2、设置环境变量
    • 3、下载更新子模块
  • 四、编译代码
    • 1、编译base tools(编译工具)
    • 2、修改配置文件(target.txt)
    • 3、编译edk2源码
  • 五、运行EmulatorPkg模拟器
    • 1、运行EmulatorPkg模拟器
    • 2、下载英文输入法

一、搭建前的准备工作

  1. 操作系统: Windows 10;
  2. 编译器: VS2019 社区版;
  3. Python: Python 3.10.5;
  4. Git: Git 2.37.1;
  5. Nasm: Nasm 2.15.05;
  6. iASL: iASL 20220331;
  7. Qemu: Qemu 20220419。

  将这些软件以及编辑器等都放在一个文件里面,如下图所示,方便后续安装需要。
UEFI学习—EDK II开发环境的搭建-编程之家

二、软件安装

1、安装VS2019 社区版

  找到准备工作中的文件夹中的

vs_community__21ce00db15e940c39da6bacc307baa1b.exe

  右击以管理员身份运行,出现如下面的图所示的界面,点击继续;
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
  之后,会到如下这个界面。在下面界面里面选择红色方框的选择。
UEFI学习—EDK II开发环境的搭建-编程之家
  在单个组件中,输入cmake,勾选下图红色方框框选的组件。 UEFI学习—EDK II开发环境的搭建-编程之家
  语言包选择中文,如果喜欢用英文的,再多选择上英文也是可以的,自愿的。 UEFI学习—EDK II开发环境的搭建-编程之家
  安装位置,最好选择C盘,它默认的位置;我第一次安装时,三个位置都选择了D盘,整个环境构建是没有成功。后来也将安装位置修改到了C盘,还是没有成功。后来是在单个组件里面多勾选了cmake的组件,整个环境搭建就成功了。我觉得跟VS2019的安装位置没有很大的关系。安装位置看大家的习惯了。(如果第一次安装在了D盘,想修改安装的位置,是需要修改注册表的;如果重新修改,这个安装位置的下载缓存与共享组件等都是修改不了的,大家需要注意下)。
UEFI学习—EDK II开发环境的搭建-编程之家
  最后点击右下角的安装就好了。一直等待安装就好了,安装完成后,不用运行。
UEFI学习—EDK II开发环境的搭建-编程之家

2、安装Python

  以管理员的身份运行Python的安装包,之后注意要把Python的path添加进去,勾选上。选择自定义安装位置。
UEFI学习—EDK II开发环境的搭建-编程之家
  点击Next;
UEFI学习—EDK II开发环境的搭建-编程之家
  新建Python文件夹,选择这个文件夹,点击Install,等待安装完成,点击close就算完成安装了。
UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家

3、安装Git

  以管理员身份运行Git的安装包,点击Next;
UEFI学习—EDK II开发环境的搭建-编程之家
  选择D盘的安装位置,点击Next;
UEFI学习—EDK II开发环境的搭建-编程之家
   选中第一条选项,将Git的图标添加到桌面上。点击Next;
UEFI学习—EDK II开发环境的搭建-编程之家
  一直点击Next,直到点击Install进行安装。
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家

4、安装Nasm

  以管理员身份的运行Nasm的安装包;两个选项自由选择都可以,看自己意愿,点击Next;
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
  选择D盘,点击Next,再点击Install进行安装;
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家

5、安装IASL

  解压IASL的压缩包;
UEFI学习—EDK II开发环境的搭建-编程之家
  从这个 链接 可以知道,解药出来的文件必须保存在C盘的ASL文件夹里面。
UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家

6、安装Qemu

  以管理员身份运行Qemu的安装包。没有中文,下载英文的即可。点击Ok。
UEFI学习—EDK II开发环境的搭建-编程之家
  点击Next;
UEFI学习—EDK II开发环境的搭建-编程之家
  点击I agree,点击Next;
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
   选择D盘的安装位置,点击Install。
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家

三、 下载EDK2的源码

1、 下载edk2的源码

  在自己电脑找一个内存大一点的电脑保存edk2的源码。比如我准备在E盘保存edk2源码;在这个链接中有使用Git指令下载edk2源码的介绍。(链接)。
UEFI学习—EDK II开发环境的搭建-编程之家
  在E盘中鼠标右击,之后点击“Git Bash Here”,之后输入以下代码:

git clone https://github.com/tianocore/edk2

  敲下回车,即可下载edk2的源码。下载速率有快有慢,慢慢等待完成即可;
UEFI学习—EDK II开发环境的搭建-编程之家
  等待Git下载完成即可,(注意不要关闭这个界面,后续还需要用到);
UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家

2、设置环境变量

  右键此电脑->属性->高级系统设置->环境变量。

  1. 添加python环境变量(安装python时添加了可忽略);以此点击新建->输入变量名(PYTHON_HOME)->变量值(python的安装路径,点击浏览目录找到即可。),点击确定。下面图片显示的内容下这个链接里面。
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家
   2. 添加Nasm的环境变量
   Nasm的环境变量要求这个链接里面有说明。
UEFI学习—EDK II开发环境的搭建-编程之家
UEFI学习—EDK II开发环境的搭建-编程之家

3、下载更新子模块

  在刚才未关闭的edk2的Git界面里输入以下代码:

git submodule update --init

  等待下载更新子模块完成,即可关闭该界面。
UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家

四、编译代码

1、编译base tools(编译工具)

  在edk2文件中,点击地址栏,输入cmd,敲击回车。

UEFI学习—EDK II开发环境的搭建-编程之家   回车后,输入如下代码:

edksetup.bat    //初始化编译环境 

UEFI学习—EDK II开发环境的搭建-编程之家
  只要不出现error的提示,就可以不用管,只有WARNING不打紧,不会影响编译与构建。接着输入如下代码:

edksetup.bat rebuild  //这个步骤把build 命令加入到环境变量中,并且生成默认的conf文件

UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家

2、修改配置文件(target.txt)

  先看这个链接,再去修改。
UEFI学习—EDK II开发环境的搭建-编程之家
  修改步骤如下:

  1. 打开edk2源码文件夹,找到Conf文件夹并打开;
UEFI学习—EDK II开发环境的搭建-编程之家
   2. 找到target.txt并打开;
UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家
  3. 修改下面代码的属性选项;

TARGET_ARCH = X64                         // 修改属性选项为X64 根据电脑属性配置
TOOL_CHAIN_TAG = VS2019                   //  编译器选项 这里安装是VS2019的编译器

  这个修改根据自己的安装的工具进行配置。

UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家

3、编译edk2源码

  使用cmd控制台进入到EDK 2源码根目录后执行以下代码:

edksetup.bat rebuild

UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家  之后执行以下代码:

build

UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家  当出现done则表示编译成功。

五、运行EmulatorPkg模拟器

1、运行EmulatorPkg模拟器

  以EmulatorX64为例,编译后,找到edk2文件夹中的build,通过后在build文件夹中会生成相应的EmulatorX64文件夹,里面存放着该平台对应的生成结果。

UEFI学习—EDK II开发环境的搭建-编程之家  找到WinHost.exe的可执行文件,双击运行后如下:

UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家
  注意:此时GOP平台点击不了,这是因为不是英文模式;build的时候最好系统输入法最好切换到英文模式,否则可能会出现模拟器失去焦点问题。

2、下载英文输入法

  找到设置中语言设置界面,如下图所示,点击添加语言。
UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家UEFI学习—EDK II开发环境的搭建-编程之家  安装后,切换到该英文模式的输入法,再去打开WinHost.exe即可使用。

UEFI学习—EDK II开发环境的搭建-编程之家
  至此,EDK2的开发环境就搭建起来了。