UEFI——Windows10+VS2019 EDKII环境搭建

前言

前一阵子换了新的电脑 终于换下了我将近十年的老本。之前的笔记本历史悠久 使用的还是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 会报错!!
在这里插入图片描述
上图中1和2是必须选择安装的,3为可选项。
之前多次安装我没有选择3 均没有问题,但是这次一开始没有安装后期确出现了编译不过的问题

python 安装

注意安装的时候勾选一下添加至环境变量 省去自己配置环境变量的烦恼
在这里插入图片描述

IASL

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

NASM

下载 NASM官方地址 NASM
NASM是需要解压安装的 安装位置同样需要注意 后续也需要对应的修改
在这里插入图片描述

EDK2

EDK2下载的时候请仔细看一下ReadMe ,现在EDKII 压缩包中并不是完整的Code 还需要另外下载
在这里插入图片描述
如果直接打包下载 zip 当前代码中有一个部分是不全的 需要按照上图提示进行下载
这一步我没有操作 我的代码是之前编译过的 是完整的

简单测试

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

在这里插入图片描述
在这里插入图片描述
tool_def.txt:
在这里插入图片描述
运行rebuild 命令 查看结果
在这里插入图片描述
在这里插入图片描述
可以看到 现在提示环境变量设置错误
接下来配置环境变量

环境变量配置

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

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操作 此时应该能够正常的编译通过了 结果如下
在这里插入图片描述
出现Done 表示已经编译完成 此时进入 \Build\EmulatorX64\DEBUG_VS2019\X64 路径下 执行 WinHost.exe
在这里插入图片描述
就会出现最终的模拟结果 :
在这里插入图片描述如果此时你 不能移动GOP窗口 也不能输入 看一下自己是不是 中文输入法,切换一下重新编译试一下。

如果你是Windows10系统 (Windows7 Windows11我都没有出现这种情况 如果有出现这种情况的同学可以尝试同样的方法看看能不能解决),还有一种可能就是你的系统使用的是中文的版本,那么此时需要下载英文语言包的。具体的过程如下:
在这里插入图片描述

在这里插入图片描述
选中安装即可。
全部安装完成后,将输入法切换成下图模式再次重新执行WinHost.exe 就可以进行输入输出了。
在这里插入图片描述

VS2019配置

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

首先我们打开VS2019 选择 继续但无需代码
在这里插入图片描述

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

选择 调试 按照下面进行设置
在这里插入图片描述

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

call edksetup.bat rebuild
build %1

全部完成之后,点击调试
在这里插入图片描述
可以在下面的输出行看到已经开始进行编译了
在这里插入图片描述
编译完成之后 就会自动进入 UEFI模拟环境中
在这里插入图片描述
完成!!!

QUME 启动

QUME是一个硬件模拟平台 利用这个平台可以实现更多的模拟功能以及交互
当前我选择将qume直接安装到EDKII根目录下的文件中 这样方便脚本运行
在这里插入图片描述
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文件夹就能看到结果
在这里插入图片描述
Build\OvmfX64\DEBUG_VS2019\FV 路径下就能找到产生的固件 OVMF.fd 这就是我们需要在QUME中加载的固件
在这里插入图片描述
接下来在代码的根目录创建一个空文件夹 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 脚本就能得到结果了
在这里插入图片描述

完成!!!

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值