UEFI——Windows10+VS2019 EDKII环境搭建

环境搭建

  • 前言
  • 软件安装
    • 安装VS2019
    • python 安装
    • IASL
    • NASM
    • EDK2
    • 简单测试
  • 环境变量配置
  • VS2019配置
  • QUME 启动

前言

前一阵子换了新的电脑 终于换下了我将近十年的老本。之前的笔记本历史悠久 使用的还是windows7的系统 当时是按照网上的教程搭建的环境,如果还有和之前的我一样使用经典Windows7环境的,可以参考一下这篇文章进行环境的搭建。
后来Windows11下搭建环境的时候,相当于使用了新的OS和新的VS版本,有很多东西之前的参考文章也不适用了。我自己摸索着也完成环境搭建了。但是昨天我就知道了为啥没有人用windows11搭建环境了。因为我的OS更新过之后,我的环境就开始报错了!!!

所以在此诚挚提醒各位 VS2019+Windows11 组合可能会出现VS2019黑屏 编译代码报错 打不开等情况 所以还是推荐 VS2019+Windows10 的组合。
ps:VS2019是当前EDKII支持的最高版本,所以不要白费力气装最新版本的了!!!

这几天我迫于无奈,重新装了个新的OS,又重新整了一边环境配置,为了避免再次出现之前的情况而我不记得怎么安装,也为了后来者走我走过的弯路 特意将环境搭建过程记录下来。
首先将所需文件的下载地址汇总如下

VS2019 :Visual Studio 2019 版本 16.11 发行说明 | Microsoft Learn
python :Python Release Python 3.11.0 | Python.org
IASL : IASL
NASM:NASM
EDK2:GitHub - EDKII/edk2: EDK II

软件安装

安装VS2019

EDKII的 编译当前支持的最高编译器版本为VS2019 VS2020不能作为编译器使用
安装VS2019的时候建议安装在默认的位置安装
下图所示为需要选择额外的安装选项。
注意 更新版本的SDK 比如 Windows10SDK10.18362.0我没有尝试能否支持 ,但是不要同时安装两个版本的SDK 会报错!!
UEFI——Windows10+VS2019 EDKII环境搭建_第1张图片
上图中1和2是必须选择安装的,3为可选项。
之前多次安装我没有选择3 均没有问题,但是这次一开始没有安装后期确出现了编译不过的问题

python 安装

注意安装的时候勾选一下添加至环境变量 省去自己配置环境变量的烦恼
UEFI——Windows10+VS2019 EDKII环境搭建_第2张图片

IASL

下载地址iasl 官方网站 Windows Source Code Packages | The ACPI Component Architecture Project
在这里可以选择你想下载的版本 我当前用的版本是 之前已经下载过的 windows20190405的版本
下载之后是一个压缩包的形式 解压之后就可以直接使用无需额外的安装
UEFI——Windows10+VS2019 EDKII环境搭建_第3张图片
这个文件夹存放的位置需要注意 如果你没有将他放在C盘的根目录下 则需要在后续的步骤中对edk2中conf/tools_def.txt进行修改

NASM

下载 NASM官方地址 NASM
NASM是需要解压安装的 安装位置同样需要注意 后续也需要对应的修改
UEFI——Windows10+VS2019 EDKII环境搭建_第4张图片

EDK2

EDK2下载的时候请仔细看一下ReadMe ,现在EDKII 压缩包中并不是完整的Code 还需要另外下载
UEFI——Windows10+VS2019 EDKII环境搭建_第5张图片
如果直接打包下载 zip 当前代码中有一个部分是不全的 需要按照上图提示进行下载
这一步我没有操作 我的代码是之前编译过的 是完整的

简单测试

以上几个部分是需要下载安装的全部的软件了,接下来先简单测试一下有什么问题
进入EDK2的文件下,执行edksetup.bat
UEFI——Windows10+VS2019 EDKII环境搭建_第6张图片这一步是为了生成conf/tools_def.txt 和target.txt
UEFI——Windows10+VS2019 EDKII环境搭建_第7张图片之前我们说过有因为我的安装路径并非全部为默认路径,所以几个地方是需要修改的,现在在这里统一修改:
首先target.txt :

在这里插入图片描述
在这里插入图片描述
tool_def.txt:
UEFI——Windows10+VS2019 EDKII环境搭建_第8张图片
运行rebuild 命令 查看结果
UEFI——Windows10+VS2019 EDKII环境搭建_第9张图片
UEFI——Windows10+VS2019 EDKII环境搭建_第10张图片
可以看到 现在提示环境变量设置错误
接下来配置环境变量

环境变量配置

此处如果你前面所有软件的安装都是默认的路径,那么你的环境变量只需将下面的添加进去即可:

set NASM_PREFIX=C:\NASM
set CLANG_BIN=C:\NASM
set CYGWIN_HOME=E:\edk2\BaseTools\Bin\CYGWIN_NT-5.1-i686 (此处注意选择你自己保存edk2代码的位置进行更改)
set IASL_PREFIX=C:\ASL\

如果前面你和我一样 并没有按照默认的路径进行安装 那么需要添加的环境变量会更多一点:(下面是我的环境变量配置情况 请按照你实际安装的情况进行配置)

set NASM_PREFIX=D:\NASM
set CLANG_BIN=D:\NASM
set CYGWIN_HOME=E:\edk2\BaseTools\Bin\CYGWIN_NT-5.1-i686 (此处注意选择你自己保存edk2代码的位置进行更改)
set PYTHON_HOME=D:\Python37
set VS2019_PREFIX=D:\VS2019\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133
set IASL_PREFIX=D:\ASL\

此处说明一下 VS 2019 和 python 强烈建议按照默认的路径进行安装 不然很容易出现各种错误

环境变量修改完成之后 再次执行rebuild操作 此时应该能够正常的编译通过了 结果如下
UEFI——Windows10+VS2019 EDKII环境搭建_第11张图片
出现Done 表示已经编译完成 此时进入 \Build\EmulatorX64\DEBUG_VS2019\X64 路径下 执行 WinHost.exe
UEFI——Windows10+VS2019 EDKII环境搭建_第12张图片
就会出现最终的模拟结果 :
UEFI——Windows10+VS2019 EDKII环境搭建_第13张图片如果此时你 不能移动GOP窗口 也不能输入 看一下自己是不是 中文输入法,切换一下重新编译试一下。

如果你是Windows10系统 (Windows7 Windows11我都没有出现这种情况 如果有出现这种情况的同学可以尝试同样的方法看看能不能解决),还有一种可能就是你的系统使用的是中文的版本,那么此时需要下载英文语言包的。具体的过程如下:
UEFI——Windows10+VS2019 EDKII环境搭建_第14张图片

UEFI——Windows10+VS2019 EDKII环境搭建_第15张图片
选中安装即可。
全部安装完成后,将输入法切换成下图模式再次重新执行WinHost.exe 就可以进行输入输出了。
在这里插入图片描述

VS2019配置

在开发的过程中 使用命令行这样build 执行十分不方便 ,我们可以利用VS2019进行开发和调试。

首先我们打开VS2019 选择 继续但无需代码
UEFI——Windows10+VS2019 EDKII环境搭建_第16张图片

接着从现有代码创建项目:
UEFI——Windows10+VS2019 EDKII环境搭建_第17张图片
创建项目类型 Visual C++
UEFI——Windows10+VS2019 EDKII环境搭建_第18张图片
在下一步 将UEFI常用的文件类型进行添加: *.fdf;*.dsc;*.dec;*.inf;*.uni ,同时创建自己的项目名
UEFI——Windows10+VS2019 EDKII环境搭建_第19张图片
全部完成后,选择下一步:
UEFI——Windows10+VS2019 EDKII环境搭建_第20张图片
按照上图进行选择 使用外部生成系统
UEFI——Windows10+VS2019 EDKII环境搭建_第21张图片
按照上图添加命令行(后续会告诉你添加的是什么)
点击完成 等待一会进入VS2019主界面
UEFI——Windows10+VS2019 EDKII环境搭建_第22张图片
进行调试配置 按照下图进行选择
UEFI——Windows10+VS2019 EDKII环境搭建_第23张图片

选择 调试 按照下面进行设置
UEFI——Windows10+VS2019 EDKII环境搭建_第24张图片

上图红色框框的部分就是 前面提到的WinHost.exe的路径
修改完成之后确定保存
上述设置完成后,还需要在代码的根目录添加一个 VSbuild.bat的脚本,脚本内容如下:

call edksetup.bat rebuild
build %1

全部完成之后,点击调试
UEFI——Windows10+VS2019 EDKII环境搭建_第25张图片
可以在下面的输出行看到已经开始进行编译了
UEFI——Windows10+VS2019 EDKII环境搭建_第26张图片
编译完成之后 就会自动进入 UEFI模拟环境中
UEFI——Windows10+VS2019 EDKII环境搭建_第27张图片
完成!!!

QUME 启动

QUME是一个硬件模拟平台 利用这个平台可以实现更多的模拟功能以及交互
当前我选择将qume直接安装到EDKII根目录下的文件中 这样方便脚本运行
UEFI——Windows10+VS2019 EDKII环境搭建_第28张图片
QUME安装完成之后 首先需要使用另外一个platform将这套代码进行重新编译
我是在代码的根目录下写了一个脚本用来执行 这样我既可以用VS 的Emulator进行模拟 也可以用QUME进行模拟
创建一个脚本 名为 QUMEbuild.bat 内容如下

call edksetup.bat rebuild
build -p OvmfPkg\OvmfPkgX64.dsc

执行脚本可能会发现报错说你没有安装ASL
注意 这个位置的报错 是需要安装在C盘根目录并且文件名必须asl (必须小写) 所以我迫于无奈又把放在D盘的IASL文件又copy到C盘一份
(这个报错我没有详细研究到底是什么问题 我就直接copy了 所以有知道是哪里需要修改的可以告诉我一下)

(感谢评论区的小伙伴解答了我的疑惑 我忘记添加环境变量 所以才会有这个问题 现在已经将对应得环境变量添加 然后编译就可以顺利通过 。 对应的修改也已同步到文章中 大家可放心食用了)

然后再次执行QUMEbuild.bat脚本就成功了 在build文件夹就能看到结果
UEFI——Windows10+VS2019 EDKII环境搭建_第29张图片
Build\OvmfX64\DEBUG_VS2019\FV 路径下就能找到产生的固件 OVMF.fd 这就是我们需要在QUME中加载的固件
UEFI——Windows10+VS2019 EDKII环境搭建_第30张图片
接下来在代码的根目录创建一个空文件夹 QemuDisk
在这里插入图片描述
然后在qemu文件夹下创建脚本实现自动执行 setup_qume.bat
脚本内容如下

set filename=%date:0,4%%date:5,2%%date:8,2%_%time:0,2%-%time:3,2%-%time:6,2%%_DEBUG.log
qemu-system-x86_64.exe -bios E:\edk2\Build\OvmfX64\DEBUG_VS2019\FV\OVMF.fd -hda fat:rw:E:\edk2\QemuDisk -net none -debugcon file:E:\edk2\DebugLog%filename% -global isa-debugcon.iobase=0x402

set 行是将保存时间作为文件名一部分进行保存
最后的 -net none是跳过pxe启动
-debug file 表示生成DEBUG信息 后面接file表示存储名称
-debug

执行setup_qume.bat 脚本就能得到结果了
UEFI——Windows10+VS2019 EDKII环境搭建_第31张图片

完成!!!

你可能感兴趣的:(UEFI,uefi)