UEFI模拟环境搭建——windows+EDKII

news2025/1/16 18:51:27

目录

0 说明

1 安装软件

1.1 VS2019的安装

1.2 Python的安装

1.3 IASL的安装

1.4  NASM的安装

1.5 git的下载

2 EDKII的下载

3 配置环境


0 说明

       个人感觉UEFI的环境搭建非常复杂,在经过很长一段折磨后,终于还是搭建成功,写下来记录一下,同时如果可以的话,也希望给其他小伙伴带来一些帮助。要搭建UEFI的环境,需要下载一些必要的依赖文件:VS2019、Python、NASM、IASL、Git,下面就看下具体步骤吧。

参考资料:(非常感谢以下大佬的博客)

本文只是作为笔记使用,不作为商业用途,侵删。

UEFI——Windows10+VS2019 EDKII环境搭建_iasl下载-CSDN博客

UEFI学习---EDK II开发环境的搭建_edk2-CSDN博客

【UEFI】Windows和Linux下的环境搭建_uefi环境搭建-CSDN博客

UEFI原理与编程(二)UEFI开发环境搭建

环境:

Windows 10

1 安装软件

1.1 VS2019的安装

这里我使用的是VS2019,其实也可以选用其他的,相差不大应该都行,但是注意不要超过VS2019,因为EDKII支持的最高版本就到VS2019。

下载链接:Visual Studio 2019 再分发 | Microsoft Learn

下载之后,安装即可。

按照下图选择即可。

之后按照步骤正常安装即可。

对了,VS 2019的安装路径最好是默认的。(其实不是默认的我也没试过,参考其他人写的)

1.2 Python的安装

现在一般都是使用python3了,具体版本应该都差不多。

Download Python | Python.org

我下载的是python 11。安装python时,注意直接选择添加至环境变量,这样不用自己配置环境变量。

1.3 IASL的安装

IASL只需要下载解压,不用安装。

https://www.intel.com/content/www/us/en/developer/topic-technology/open/acpica/download.html

我放在了C盘下,C:\ASL\

1.4  NASM的安装

NASM的版本要在2.15以及以上。

Index of /pub/nasm/releasebuilds/2.15.05/win64

下载后管理员安装即可,没有什么特别注意的,有的话就注意下安装路径就行。我这里也是在C:\NASM\

1.5 git的下载

下载对应系统的git(这里是以windows 10为例)

Git - Downloading Package

2 EDKII的下载

下载git后,右键就可看到多出有关git的选项:

为了下载EDKII,我在C下创建了文件夹edk2pro。(C:\edk2pro)

进入C:\edk2pro右键打开Open Git Bash here。

下载源码:

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

这里可能会出错,大多数都是网络原因,可以多尝试几遍(如果还不行就只能换源或者(呃...))

之后进入edk2文件夹:(C:\edk2pro\edk)

$ cd edk2
$ git submodule update --init

这里给git也可能失败。同样大多数都是网络原因,可以多尝试几遍(如果还不行就只能换源或者(呃...))。

3 配置环境

这步是最麻烦、最容易出错的。

首先把python、NASM、IASL添加到用户变量里面。

找到设置——搜索高级系统设置——点击环境变量——点击用户变量path——点击编辑——添加路径即可。(有的时候要求最好要带上“ \ ”,其实不太明白这里是不是重要的,只能在编译时都试试╮(╯▽╰)╭)

如果不行可以在这里再添加下:

运行edksetup.bat(如果不行先运行edksetup.bat rebuild)

我这里是先运行edksetup.bat会报错,说没有Win32,我只好运行edksetup.bat rebuild就没事了,反正就是在运行edksetup.bat和运行edksetup.bat rebuild间不断调,最好能运行成功。具体我不太明白。╮(╯▽╰)╭

之后找到edk2\Conf,下有target.txt和tools_def.txt。

target.txt:

一般tools_def.txt不用修改。

注意以下路径:

之后就可以运行edksetup.bat rebuild

运行完后build,done即为成功。

如果这里出错,可以先配置下环境:

# 这样设置只作用于本次cmd
set PYTHON_HOME=C:\python311   # 全是我下载的路径,修改为自己路径
set NASM_PREFIX=C:\NASM\
set IASL_PREFIX=C:\ASL\
set VS2019_PREFIX= VS2019路径(写到...MSVC\14.16.27023就行)

如果以上不行,那就重启电脑,之后打开cmd,先配置环境,再edksetup.bat rebuild,再build即可。

4 运行实例代码HelloWorld

再build后就可以在...edk2\Build\EmulatorX64\DEBUG_VS2019\x64下找到WinHost.exe,点击运行。

注意这里打开后,可能没法进行操作,主要是因为输入法的问题,我们需要下载英语输入法,之后切换后再次运行。

设置——时间和语言——语言

应用后切换:

再次点击WinHost.exe,输入fs0,输入HelloWorld.efi:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1340567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jenkins实战指南:实现自动化代码拉取和Harbor私有镜像仓库上传

前两篇中,介绍了如何搭建个人私有镜像仓库Harbor,并编写了一个goweb项目进行打包上传,本文则继续介绍如何利用jenkins 实现自动打包镜像并上传。 《云原生必备工具!手把手教你搭建Harbor私有仓库(上)》 搭建jenkins mkdir jenk…

二叉树简单题|对称、翻转、合并二叉树

二叉树简单题|对称、翻转、合并二叉树 文章目录 二叉树简单题|对称、翻转、合并二叉树模板代码101 对称二叉树226 翻转二叉树617 合并二叉树 模板代码 private boolean process(TreeNode p, TreeNode q) {if (p null && q null) {return ;} else if (p null &&…

「微服务」微服务架构中的数据一致性

在微服务中,一个逻辑上原子操作可以经常跨越多个微服务。即使是单片系统也可能使用多个数据库或消息传递解决方案。使用多个独立的数据存储解决方案,如果其中一个分布式流程参与者出现故障,我们就会面临数据不一致的风险 - 例如在未下订单的情…

【网络安全 | Misc】世安杯 Banmabanma

该题考察图片隐写 正文 压缩包解压后得到如图png: 很明显是个条形码的图片隐写题,放入网站进行识别即可: https://online-barcode-reader.inliteresearch.com/flag{TENSHINE}

【C语言】程序练习(二)

大家好,这里是争做图书馆扫地僧的小白。 个人主页:争做图书馆扫地僧的小白_-CSDN博客 目标:希望通过学习技术,期待着改变世界。 目录 前言 一、运算符练习 1 算术运算符 1.1 练习题: 2 自加自减运算符 3 关系运…

Vulnhub-Al-Web-1.0 靶机复现完整过程

一、信息收集 1.主机发现 arp-scan -l2.端口扫描 nmap -sV -p- 192.168.200.16PORTSTATESERVICEVERSIONMAC Address80/TCPOpenhttpApache httpd00:0C:29:C4:1B:78 (VMware) 3.目录扫描 python dirsearch.py -u http://192.168.200.16扫描出来这两个文件,首先先…

MATLAB中./和/,.*和*,.^和^的区别

MATLAB中./和/,.*和*,.^ 和^ 的区别 MATLAB中./和/,.*和*,.^ 和^ 的区别./ 和 / 的区别.//实验实验结果 .* 和 * 的区别.**实验实验结果 .^ 和^ 的区别.^n^n实验运行结果 MATLAB中./和/,.和,.^ 和^ 的区别 …

腾讯云轻量服务器和云服务器CVM该怎么选?区别一览

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…

gitee+picgo+typora图床搭建

giteepicgotypora图床搭建 1.安装typora 官网下载直接安装:https://www.typora.io/#download 2.编辑typora图像设置 打开 文件 -> 偏好设置 -> 图像设置 插入图片时 选择 上传图片设置 上传服务 为 PicGo-Core(command line) 3.为typora安装PicGo-Core 点…

怎么设置Facebook双重验证,让Facebook账号更稳定?

对于跨境电商而言,Facebook 账号被封是常有的事,原因之一可能是没有给 Facebook 设置双重验证,今天就和大家科普一下什么是 Facebook双重验证以及如何设置,另外,作为跨境卖家,我们还需要了解如何保护 Faceb…

群晖(Synology)Plex 的服务找不到文件夹

当 Plex 在搜索 NAS 上的文件夹的时候找不到文件夹中的内容。 如下图中显示的内容。 上面的 Public 文件夹中找不到我们的子文件夹,但是我们的子文件夹是有内容的。 问题和解决 出现上面的问题主要还是权限的问题。 选择需要访问的文件夹,然后在文件…

【数据结构】C语言实现单链表的基本操作

单链表基本操作的实现 导言一、查找操作1.1 按位查找1.1.1 按位查找的C语言实现1.1.2 按位查找的时间复杂度 1.2 按值查找1.2.1 按值查找的C语言实现1.2.2 按值查找的时间复杂度 二、插入操作2.1 后插操作2.2 前插操作 三、删除操作结语 导言 大家好,很高兴又和大家…

软件测试/测试开发丨Pytest 参数化用例

参数化 通过参数的方式传递数据,从而实现数据和脚本分离。并且可以实现用例的重复生成与执行。 参数化应用场景 测试登录场景 测试登录成功,登录失败(账号错误,密码错误)创建多种账号: 中⽂文账号,英⽂文账号 普通测试用例方法 …

隐蔽的事务失效...

🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注),发送笔记可领取 Redis、JVM 等系列完整 pdf! 【11来了】文章导读地址&#xff1…

Cookie的详解使用(创建,获取,销毁)

文章目录 Cookie的详解使用(创建,获取,销毁)1、Cookie是什么2、cookie的常用方法3、cookie的构造和获取代码演示SetCookieServlet.javaGetCookieServlet.javaweb.xml运行结果如下 4、Cookie的销毁DestoryCookieServletweb.xml运行…

postman进阶使用

前言 对于postman的基础其实很容易上手实现,也有很多教程。 对于小编我来说,也基本可以实现开发任务。 但是今年我们的高级测试,搞了一下postman,省去很多工作,让我感觉很有必要学一下 这篇文章是在 高级测试工程师ht…

Python从入门到熟练

文章目录 Python 环境Python 语法与使用基础语法数据类型注释数据类型介绍字符串列表元组集合字典 类型转换标识符运算符算数运算符赋值运算符复合运算符 字符串字符串拼接字符串格式化 判断语句bool 类型语法if 语句if else 语句if elif else 语句 循环语句while循环for 循环r…

12.27重构二叉树,插入排序,队列(股票,模拟),后缀表达式求值,括号匹配,验证栈序列,选择题部分

重构二叉树 误 string in, post; struct node {char a;node* lchild, * rchild;node(char x\0) :a(x), lchild(nullptr), rchild(nullptr) {} }; void so(node* r, int il, int ir, int pl, int pr) {if (il > ir)return;int root;for (root il; root < ir; root) {if…

C++day2作业

把课上strcut的练习&#xff0c;尝试着改成class #include <iostream>using namespace std; class Stu { private:int age;string sex;int hign; public:int soce;void get_information();void set_information(); }; void Stu::set_information() {static Stu s1;cout …

C语言KR圣经笔记 5.1指针和地址 5.2指针和函数参数

第五章 指针和数组 指针是包含变量地址的变量。在 C 语言中&#xff0c;指针被大量使用&#xff0c;部分原因是有时只能用指针来表达某种计算&#xff0c;而部分原因是相比其他方式&#xff0c;指针通常能带来更紧凑和高效的代码。指针和数组是紧密关联的&#xff1b;本章也讲…