UEFI学习---EDK II开发环境的搭建

2023-10-26

一、搭建前的准备工作

  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

  将这些软件以及编辑器等都放在一个文件里面,如下图所示,方便后续安装需要。
在这里插入图片描述

二、软件安装

1、安装VS2019 社区版

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

vs_community__21ce00db15e940c39da6bacc307baa1b.exe

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

2、安装Python

  以管理员的身份运行Python的安装包,之后注意要把Python的path添加进去,勾选上。选择自定义安装位置。
在这里插入图片描述
  点击Next;
在这里插入图片描述
  新建Python文件夹,选择这个文件夹,点击Install,等待安装完成,点击close就算完成安装了。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

3、安装Git

  以管理员身份运行Git的安装包,点击Next;
在这里插入图片描述
  选择D盘的安装位置,点击Next;
在这里插入图片描述
   选中第一条选项,将Git的图标添加到桌面上。点击Next;
在这里插入图片描述
  一直点击Next,直到点击Install进行安装。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、安装Nasm

  以管理员身份的运行Nasm的安装包;两个选项自由选择都可以,看自己意愿,点击Next;
在这里插入图片描述
在这里插入图片描述
  选择D盘,点击Next,再点击Install进行安装;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、安装IASL

  解压IASL的压缩包;
在这里插入图片描述
  从这个 链接 可以知道,解药出来的文件必须保存在C盘的ASL文件夹里面。
在这里插入图片描述在这里插入图片描述

6、安装Qemu

  以管理员身份运行Qemu的安装包。没有中文,下载英文的即可。点击Ok。
在这里插入图片描述
  点击Next;
在这里插入图片描述
  点击I agree,点击Next;
在这里插入图片描述
在这里插入图片描述
   选择D盘的安装位置,点击Install。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、 下载EDK2的源码

1、 下载edk2的源码

  在自己电脑找一个内存大一点的电脑保存edk2的源码。比如我准备在E盘保存edk2源码;在这个链接中有使用Git指令下载edk2源码的介绍。(链接)。
在这里插入图片描述
  在E盘中鼠标右击,之后点击“Git Bash Here”,之后输入以下代码:

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

  敲下回车,即可下载edk2的源码。下载速率有快有慢,慢慢等待完成即可;
在这里插入图片描述
  等待Git下载完成即可,(注意不要关闭这个界面,后续还需要用到);
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

2、设置环境变量

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

  1. 添加python环境变量(安装python时添加了可忽略);以此点击新建->输入变量名(PYTHON_HOME)->变量值(python的安装路径,点击浏览目录找到即可。),点击确定。下面图片显示的内容下这个链接里面。
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/3afd634d747a452f9432c5152efaa777.png
   2. 添加Nasm的环境变量
   Nasm的环境变量要求这个链接里面有说明。
在这里插入图片描述
在这里插入图片描述

3、下载更新子模块

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

git submodule update --init

  等待下载更新子模块完成,即可关闭该界面。
在这里插入图片描述在这里插入图片描述

四、编译代码

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

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

在这里插入图片描述   回车后,输入如下代码:

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

在这里插入图片描述
  只要不出现error的提示,就可以不用管,只有WARNING不打紧,不会影响编译与构建。接着输入如下代码:

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

在这里插入图片描述在这里插入图片描述

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

  先看这个链接,再去修改。
在这里插入图片描述
  修改步骤如下:

  1. 打开edk2源码文件夹,找到Conf文件夹并打开;
在这里插入图片描述
   2. 找到target.txt并打开;
在这里插入图片描述在这里插入图片描述
  3. 修改下面代码的属性选项;

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

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

在这里插入图片描述在这里插入图片描述

3、编译edk2源码

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

edksetup.bat rebuild

在这里插入图片描述在这里插入图片描述  之后执行以下代码:

build

在这里插入图片描述在这里插入图片描述  当出现done则表示编译成功。

五、运行EmulatorPkg模拟器

1、运行EmulatorPkg模拟器

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

在这里插入图片描述  找到WinHost.exe的可执行文件,双击运行后如下:

在这里插入图片描述在这里插入图片描述
  注意:此时GOP平台点击不了,这是因为不是英文模式;build的时候最好系统输入法最好切换到英文模式,否则可能会出现模拟器失去焦点问题。

2、下载英文输入法

  找到设置中语言设置界面,如下图所示,点击添加语言。
在这里插入图片描述在这里插入图片描述在这里插入图片描述  安装后,切换到该英文模式的输入法,再去打开WinHost.exe即可使用。

在这里插入图片描述
  至此,EDK2的开发环境就搭建起来了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UEFI学习---EDK II开发环境的搭建 的相关文章

  • 如何完全删除使用init创建的git存储库?

    我创建了一个 git 存储库git init 我想完全删除它并启动一个新的 Git 将其所有文件保存在 git目录 只要删除那个并再次初始化即可 如果你找不到它 那是因为它被隐藏了 In Windows 7 you need to go t
  • svn diff 或 git diff 中带有 at 符号的“@@...@@”元行是什么意思?

    当我使用svn diff or git diff它显示如下行 1 5 1 9 他们的意思是什么 这些称为 c hunk 标头并包含范围信息 它们周围有双标志 它们的格式如下 l s l s where l是起始行号并且s是 c hunk 应
  • Git 更改未显示在 VS2013 Update 2 中

    我在 VS2013 中使用 Git 我更改的文件没有显示在 VS 的 更改 窗口中 当我更改文件但在将其保存到磁盘之前 它确实会显示 但是 一旦我将文件保存到磁盘 更改就会从 更改 窗口中消失 我尝试卸载并重新安装 VS2013 但没有帮助
  • 使用 git 组织多个项目的最佳方式是什么

    我有 5 10 个独立项目 希望使用 Git 将其置于版本控制之下 组织项目 存储库的最佳方式是什么 每个项目使用一个存储库 对我的所有工作使用一个存储库 并为每个项目使用子目录 或者完全不同的东西 什么对你最有效 为什么 我肯定会说每个项
  • GitHub 的 Subversion 版本? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何摆脱指向origin/master的远程origin/HEAD?

    最近 我在两个不同的复制服务器上更改了我的原始遥控器 现在我在服务器上遇到这种情况 一切正常 git branch a master remotes origin master 在另一台服务器上我有这个 git branch a maste
  • 将项目从 github 克隆到 RStudio 时出现错误消息“无法获取本地颁发者证书”

    我试图从 RStudio 克隆 github 的存储库 我已将 git 配置为版本控制可执行文件 我收到此错误消息 SSL 证书问题 无法获取本地颁发者证书 我需要做什么 Thanks 使用以下步骤 访问 github 站点 www git
  • 在 git 中标记多个分支?

    我有一个有两个分支的 git 存储库 一个用于制造 测试的代码 另一个是实际的生产固件 它们几乎相同 现在是时候剪切一个版本并发送给制造商了 所以我自然想在两个分支上放置一些适当的标签 但是 似乎 git 不允许我在两个分支上放置相同的标签
  • git push 说“一切都是最新的”,即使我有本地更改

    我有一个远程 gitosis 服务器和一个本地 git 存储库 每次我对代码进行重大更改时 我也会将更改推送到该服务器 但今天我发现即使我有一些本地更改并提交到本地存储库 运行时git push origin master它说 一切都是最新
  • git Branch -m 对其他开发人员有副作用吗?

    We ve 已经学会了如何切换哪个分支指向哪个分支 https stackoverflow com questions 21848 switch branch names in git using git branch m 如果我这样做 是
  • p4 命令行相当于“git log -p”?

    我经常使用git log p
  • 我可以使用 GIT_CONFIG 环境变量来为所有 git 命令使用配置文件吗

    我一直在尝试使用 git 配置文件export GIT CONFIG
  • 在 Git 上保存 Excel 文件的版本,以便稍后手动协调差异

    我将用一个月的时间更新Excel文件 这些文件的语言不是英语 我想我也可以使用 Git 来管理我想做的事情 情况 初始提交 我有一个用其他语言编写的 Excel 文件 我必须执行一些工作并用其中的数据填充 Excel 文件 My plan
  • iOS CoreData:“数据模型版本编译器”错误

    我在项目中创建了一个数据模型文件 ChatModel xcdatamodeld 然后我合并了github上的分支 project pbxproj 中存在冲突 我修好了它们 然后错误就发生了 Users mac zhongqing ios Z
  • 如何让 git 忽略目录的所有内容?

    我有一个 git 目录 其中包含一大堆文件 然后有一个名为 sessions 的目录 sessions 包含我的 web py 程序的 cookie 信息 我需要将 sessions 文件夹保留在 git 存储库中 因为如果没有该文件夹 程
  • 处于分离头状态时如何保存更改?

    使用 Git 时 我必须返回到特定的提交 我做了一些更改 现在我想提交它们 这样做的正确方法是什么 我的项目现在处于分离头状态 如果我提交 我的更改会被保存吗 git commit 否则 我应该怎么做才能不丢失我的更改 免责声明 git 并
  • 变基中的传入和当前

    有一个与此类似的问题 但其范围太笼统 而且响应过于复杂 我的问题是非常准时 当从我的分行MyBranch并进行像这样的变基git rebase master并发生冲突 这是传入的变化 哪个是目前的变化 请不要关闭这个问题 将其链接到之前所说
  • 使用git在测试和生产环境之间同步数据库

    我正在尝试在 php mysql 应用程序的开发过程中实现 git 到目前为止 我已经设置了 git repos 并且我们正在使用本地计算机进行测试 并且我们成功地将其用于文件 但我真的不知道如何处理数据库 服务器上有一个 cron 脚本
  • SourceTree 中通过 textconv 自定义差异

    我正在尝试比较和合并 SourceTree 中的 MySQL WorkBench 文件 为此 我创建了一个小型 shell 脚本 用于提取 mwb 文件的内容 并从其中的 XML 文件中删除一些无用的计数器 然后我将此行添加到项目根目录中的
  • 拉取请求是 Git 的一部分,还是 GitHub、Gerrit 和 Atlassian Stash 等工具的功能?

    Pull 请求似乎是使用 Git 进行代码审查的常用方法 然而 尚不清楚该术语在使用内置函数时是否具有相同的含义 git request pull 或不同的工具 Pull 请求是 Git 的固有功能 还是 GitHub Gerrit 或 A

随机推荐

  • 前端基础,超全html常用标签大汇总

    标签 整个html文件都会放在html标签里面 标签 表示网页的头部信息 一般是为浏览器提供对应的网站需要的相关信息 浏览器中是不会显示的 比如 标题title 引入css 字符编码等 但是title标题会在浏览器的标题栏显示 标签 里面的
  • 服务器中毒怎么办,如何防御?

    数据中心在为用户提供服务器空间和网络服务时 往往也会为用户提供日常维护服务 用户在服务器运行使用中会突然就发现自己的服务器存在中毒和疑似中毒的现象 那么如何进行中毒行为的排查和清理 为用户提供日常维护服务的过程中经常听到用户抱怨自己使用的服
  • uniapp 选择地址

    uni getLocation OBJECT uni app官网 wx getSetting success res gt if res authSetting scope userLocation wx authorize scope s
  • 【Node】Deepin和Centos 简单快速安装Node和npm和pnpm

    1 deepin 进行安装 安装npm sudo apt install npm 安装node sudo npm install g n 升级node到稳定版 sudo n stable 升级到最新版 sudo n latest 升级npm
  • Databend Cloud 入选中国信通院《云原生产品目录》

    近日 在中国信通院召开的云原生产业大会上 正式发布了 2022 年度首批 云原生产品目录 Databend Cloud 产品成功入选 云原生产品目录 中国信通院为解决云原生用户选型困境 全面拉齐行业认知 推动云原生产业蓬勃发展 而发起 征集
  • pip install 安装路径的修改

    一般我们需要安装第三方库的时候 都是进入cmd中用pip命令来进行安装 安装各类包 但是默认安装路径在C盘 极大占用空间 下面我们就来修改一下默认的安装路径 1 查看pip默认的安装路径 打开命令提示符 win r 输入cmd 输入命令如下
  • 全国计算机二级WPS Office题库(四)

    根据最新考试大纲要求 结合近年来考试真题的重难点进行汇编整理组成的全真模拟试题 考生们可以根据文章进行专项训练 查漏补缺巩固知识点 我们对热点考题和重难点题目都进行了仔细的整理和编辑 相信考生在经过了针对性的刷题联系后 对于考试内容会更加有
  • tensorflow-gpu版本安装教程(过程详细)

    准备工作 在开始安装前 如果你的电脑装过tensorflow 请先把他们卸载干净 包括依赖的包 tensorflow estimator tensorboard tensorflow keras applications keras pre
  • myBatis 常见问题(一)查询结果字段为null

    问题描述 查询认购单详情
  • 使用python爬爬菜价

    第一步我们先导入需要用到的库 from requests html import HTMLSession import pymysql import json 然后打开网站 点击查看更多 点击下一页 发现网页地址栏没有变化 由此可知这是一个
  • rollup函数(分组后对每组数据分别合计)

    需求 sql通过分组查询后 对每组数据进行小计 然后对总的数据总计 rollup的作用 用 ROLLUP 汇总数据 在生成包含小计和合计的报表时 ROLLUP 运算符很有用 例子 SQL gt select deptno job sum s
  • C++红黑树(图文详解)

    原文链接 文章目录 红黑树简介 红黑树的性质 红黑树操作 旋转操作 插入 情况一 情况二 情况三 情况四 情况五 插入总结 删除 情况一 情况二 情况三 情况四 情况五 情况六 删除总结 总结 红黑树简介 红黑树是一种自平衡的二叉查找树 是
  • 【代码分享】分享基于openwrt的PandoraBox路由器的dnsmasq.conf配置代码

    注 该配置只有在同时开启ss的时候才可使用 5454是pdnsd的端口 介绍 除了热门网站和top100网站 其它的网址dns请求都转到5454端口转换成tcp请求通过ss解析 no resolv no poll server cn 114
  • C语言数组的增删改查

    总代码 该代码用c语言初步实现了数组的增删改查 include
  • 接收灵敏度dbm与W

    一 基本概念 接收灵敏度 官方概念 接收机能够识别到的 最低的电磁波能量 单位也是dBm 解读 接收灵敏度 就是你的耳朵能听到的最小的声音 耳朵灵敏度高的 能够听到很远的声音 例如 蓝牙接收灵敏度在 90dBm左右 2G接收灵敏度在 108
  • C++并发编程(一):并发与并行,一个简单的多线程例子

    并发与并行 并发 多个任务可以同时存在 程序在逻辑上可以实现多个任务同时存在 那么这个程序就是并发程序 并发程序在物理实现上既可以是并行 也可以是串行 串行 单个处理器通过 任务切换 的方式 在一秒之内进行多次任务切换 给人一种任务并发的错
  • Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression

    摘要 边框回归是目标检测的关键步骤 在现有的方法中 虽然在边框回归中广泛采用了n范数损失 但并不是针对评价指标IoU进行定制的 近年来 人们提出了IoU损失和G IoU损失两种可以有利于提升IoU指标的方法 但仍存在收敛速度慢 回归不准确等
  • 小城市8K一跃成为大城市24K,带你解读高薪跳槽背后的逻辑

    本文来自黑马程序员Java的童老师公开课 曾任技术总监 管理超过30人的技术团队 12年技术开发经验 近7年从事开发管理工作 精通Java 对高可用 高并发 微服务架构有深入研究 精通前端技术栈 如AngularJs Vue ReactJs
  • mysql 树结构查询字符串太长问题

    mysql不像oracle有专门的start with来处理树结构查询 看网上很多都是用写函数拼接字符串的办法 再用find in set 但这样如果ID过长 比如我要查找的 ID有8位数 如果有100个以上下级的话 很容易超过1000的长
  • UEFI学习---EDK II开发环境的搭建

    EDK II的开发环境搭建 Windows系统 一 搭建前的准备工作 二 软件安装 1 安装VS2019 社区版 2 安装Python 3 安装Git 4 安装Nasm 5 安装IASL 6 安装Qemu 三 下载EDK2的源码 1 下载e