UEFI 01记: 开发环境 在 ubuntu22 中搭建 edk2 开发环境并运行简单示例

news2024/11/24 12:22:05

https://uefi.org

1,预备环境

$ sudo apt install uuid-dev
$ sudo apt install nasm
$ sudo apt install bison flex
$ sudo apt install build-essential
$ sudo apt-get install x11proto-xext-dev
$ sudo apt-get install libx11-dev
$ sudo apt-get install libxext-dev
$ gcc -version
$ make --version
$ gcc --version


2,下载源代码

$ git clone http://github.com/tianocore/edk2.git
$ git clone http://github.comtianocore/edk2-libc.git
$ git clone http://github.com/tianocore/edk2-libc.git
$ git clone http://github.com/acpica/acpica.git
$ cd edk2
$ git submodule update --init
$ cd -

3,构建edk2

$ make -C edk2/BaseTools
$ python --version

$ uname -a
$ make -C ./acpica/

4,设置环境变量

$ touch setup_env.sh
$ vim setup_env.sh
$ cat setup_env.sh

$ export WORKSPACE=$PWD
$ export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-libc
$ export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-libc
$ export IASL_PREFIX=\$PWD/acpica/generate/unix/bin/
$ export PYTHON_COMMAND=/usr/bin/python3

$ . ./setup_env.sh
$ source edk2/edksetup.sh

5,构建模拟器和uefi

$ build -p edk2/EmulatorPkg/EmulatorPkg.dsc -t GCC5 -a X64


$ build -p edk2-libc/AppPkg/AppPkg.dsc -t GCC5 -a X64

6,运行模拟器和uefi

$ cd ./Build/EmulatorX64/DEBUG_GCC5/X64/
$ ls ./Host
$ ./Host

 Shell:>fs0:

FS0:\>HelloWorld.efi

7,环境和版本信息

过程非常顺利,没有遇到任何问题,做一下信息记录,备查

archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev$ python --version
Python 3.10.12
archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev$ cd edk2
archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev/edk2$ git log -2
commit b158dad150bf02879668f72ce306445250838201 (HEAD -> master, origin/master, origin/HEAD)
Author: Ashraf Ali <ashraf.ali.s@intel.com>
Date:   Sun Aug 11 21:31:12 2024 +0530

    EmulatorPkg: VS2022 Support on WinHost.
    
    Currently EDK2 is supporting VS2022, with VS2022 EmulatorPkg build is
    failing, this patch is to add the VS2022 support for WinHost
    
    Signed-off-by: Ashraf Ali <ashraf.ali.s@intel.com>

commit b0f43dd3fdec2363e3548ec31eb455dc1c4ac761
Author: Dat Mach <dmach@nvidia.com>
Date:   Tue Jun 25 15:07:38 2024 -0700

    DynamicTablesPkg: Add parser for Tpm2 CM object
    
    Update the CM Object parser to add support for parsing the
    CM_ARM_TPM2_INTERFACE_INFO object.
    
    Signed-off-by: Dat Mach <dmach@nvidia.com>
archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev/edk2$ cd ../edk2-libc/
archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev/edk2-libc$ git log -1
commit 87108465dcfbf888b8044ae86b4dc84b04b19082 (HEAD -> master, origin/master, origin/HEAD)
Author: Jayaprakash, N <n.jayaprakash@intel.com>
Date:   Tue Jul 30 21:47:06 2024 +0530

    edk2-libc: remove gitmodules file added through accidental commit
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4822
    
    Due to an accidental commit went into edk2-libc while
    experimenting with some inner-source repos lead to the addition
    of gitmodules file and a submodule. This commit is undoing
    this change by removing the gitmodules file and the submodule.
    
    Cc: Rebecca Cran <rebecca@bsdio.com>
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Jayaprakash N <n.jayaprakash@intel.com>
    Signed-off-by: Jayaprakash N <n.jayaprakash@intel.com>
    Reviewed-by: Rebecca Cran <rebecca@bsdio.com>
archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev/edk2-libc$ cd ../acpica/
archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev/acpica$ git log -1
commit c1ac0dcb84b529fa04d0f94d624344584d92e183 (HEAD -> master, origin/master, origin/HEAD)
Merge: 45f86f4bd fad7ed029
Author: Saket Dumbre <saket.dumbre@intel.com>
Date:   Tue Aug 20 16:46:29 2024 -0700

    Merge pull request #966 from Wer-Wolf/phat-fix
    
    PHAT: Various fixes
archer@archer-Z3-Pro-Series-GM5TG0O:~/ex_uefi_dev/acpica$ 

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

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

相关文章

C语言回调函数进阶篇:全面总结与实战技巧

在C语言的编程世界中&#xff0c;回调函数是一种极其重要的概念。它提供了一种灵活的方式来编写可扩展和模块化的代码。本文将带你深入理解回调函数的原理&#xff0c;并通过一系列案例&#xff0c;系统且全面地总结回调函数的使用技巧。 一、回调函数解析 1.什么是回调函数&…

实战教程:Python实现高校爬虫,运用协同过滤与k-means算法进行专业评分分析

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

【工具】复制网页为markdown的浏览器插件

本文首发于 ❄️慕雪的寒舍 说明 如果您需要转载或者想保存他人的文章。可以使用一个油猴插件&#xff0c;快速将网站页面复制为markdown&#xff08;以下简称md&#xff09;。 只要目标网站是支持md语法&#xff08;大部分博客站点都是支持的&#xff09;那么复制下来的效果…

利用VirtualBox安装CentOS系统

博主这次用VirtualBox虚拟机安装CentOS系统。无论是大小型项目都是要发布到云主机上面&#xff0c;必然要用到Linux系统&#xff0c;有的人的本地电脑硬件配置不高&#xff0c;没有办法运行数据库集群&#xff0c;所以只能借助云主机。毕竟云主机也是Linux系统&#xff0c;大家…

程序员的日常挑战:如何在编码工作与持续学习之间找到平衡?

文章目录 每日一句正能量前言高效编码习惯与时间管理技巧高效编码习惯时间管理技巧 提升式学习的策略职业发展与个人成长的和谐共生职业发展的不同阶段及其技能要求如何在工作中寻找自我提升的学习机会分享个人成长的故事与经验 后记 每日一句正能量 黎明时怀着飞扬的心醒来&am…

Unity(2022.3.38LTS) - 2D刚体

目录 一.简介 二.组件详细介绍 2D刚体 类型介绍 三. 刚体的简单使用 一.简介 2D 物理系统为开发者提供了强大的工具来模拟和控制二维游戏中的物理行为。 A、基本概念 刚体&#xff08;Rigidbody 2D&#xff09; 刚体组件用于赋予游戏对象物理属性&#xff0c;使其能够受…

消息过期时间设置:队列属性与消息TTL

消息过期时间设置&#xff1a;队列属性与消息TTL 1. 设置队列属性2. 对消息本身进行TTL设置3. 同时使用时的TTL确定 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在消息队列&#xff08;MQ&#xff09;中&#xff0c;设置消息的过期时间是…

RISC-V全志D1多媒体套件

RISC-V全志D1多媒体套件 此开发板的任何问题都可以在我们的论坛交流讨论 https://forums.100ask.net/c/aw/d1/57 硬件简述 D1主板 以下是主板图&#xff1a; D1板载功能 板载功能有&#xff1a; XR829 WIFI蓝牙模组芯片&#xff0c;Bluetooth支持标准蓝牙与 低功耗蓝牙&a…

WPF中的可视化树(VisualTree)和逻辑树(LogicalTree)

可视化树和逻辑树 我们先来理解一下什么是可视化树和逻辑树。 可视化树&#xff1a;包含最初指定的大多数元素&#xff08;在XAML或.cs中&#xff09;以及控件模板中的元素。 通俗点来讲&#xff0c;就是整个元素的构成树&#xff0c;从最上面的结点到最后一个结点&#xff…

华为:IT系统的演进与数字时代IT系统的重新定位

往期回顾&#xff1a; 企业4A架构&#xff1a;数字化转型的底层方法论&#xff08;附TOGAF资料下载&#xff09; PPT分享&#xff1a;数据治理的方法论、设计思路与方案&#xff08;干货&#xff09; 浅谈数字化转型方法论 110页PPT:xx业务流程优化&#xff08;BPR&#xff…

树状数组算法

文章目录 树状数组是什么树状数组与线段树的区别与联系树状数组讲解点修&#xff0c;区查&#xff0c;讲解及模板点查&#xff0c;区修讲解及模板 树状数组是什么 树状数组是一种数据结构&#xff0c;提供O(logn)时间内的单点修改和区间求和操作&#xff0c;比线段树有更优的常…

语音控制开关的语音识别ic芯片方案

语音控制开关是一种基于语音识别技术的设备&#xff0c;它通过内置的语音识别芯片&#xff0c;将用户的语音指令转化为电信号&#xff0c;从而实现对设备的控制。例如在智能家居设备上的应用&#xff0c;通常需要连接到家庭的Wi-Fi网络上&#xff0c;以便与智能手机或智能音箱等…

openjdk11 jvm视角查看java线程异常退出synchronized锁自动释放

##synchronized锁异常 java代码demo public class ThreadTest {public int mul 1;public static void main(String[] args) {ThreadTest threadTest new ThreadTest();Thread yym_user_thread1 new Thread() {public void run() {System.out.println("yym_user_thread…

【C++题解】1147. 求1/1+1/2+2/3+3/5+5/8+8/13+13/21……的前n项的和

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1147. 求1/11/22/33/55/88/1313/21……的前n项的和 类型&#xff1a;函数 题目描述&#xff1a; 求1/11/22/33/55/88/1313/2121/34…的前 n 项的和。 输入&#xff1a; 输入一个…

WPF—路由事件详解

WPF—路由事件 路由事件是一种可以针对元素树中的多个侦听器而不是仅仅针对引发该事件的对象调用处理程序的事件。路由事件是一个CLR事件。 路由事件与一般事件的区别在于&#xff1a;路由事件是一种用于元素树的事件&#xff0c;当路由事件触发后&#xff0c;它可以向上或向…

C++ | Leetcode C++题解之第371题两整数之和

题目&#xff1a; 题解&#xff1a; class Solution { public:int getSum(int a, int b) {while (b ! 0) {unsigned int carry (unsigned int)(a & b) << 1;a a ^ b;b carry;}return a;} };

微程序控制器的设计

目录 一、微程序控制器的原理 1.模仿高级语言思想到微程序&#xff1a; 2.采用存储程序思想到CU内构造&#xff1a; 3.微程序执行过程&#xff1a; 二、微指令的设计 1.前置概念&#xff1a; 相容性微命令&#xff1a; 互斥性微命令&#xff1a; 2.微指令格式 水平…

作者推荐 |【Redis技术进阶之路】「技术提升系列」夯实基础分析探究ziplist压缩列表的点点滴滴

揭秘高效存储模型与数据结构底层实现 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 压缩列表&#xff08;ziplist&#xff09;压缩列表使用目的压缩列表结构组成压缩列表的各个组成部分三个…

flv格式分析与解复用

介绍 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式&#xff0c;由于其封装后的⾳视频⽂件体积⼩、 封装简单等特点&#xff0c;⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤FLV 格式封装的⽂件后缀为.flv。 FLV封装格式是由⼀个⽂件头(file header)和 …

0基础深度学习项目13:基于TensorFolw实现天气识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 一、创建环境二、前期准备2.1 设置GPU2.2 导入数据2.3 数据预处理2.3.1 加载数据2.3.2 查看图像的标签 2.4 数据可视化 三、构建简单的CNN网络&#xff0…