Linux下UEFI模拟器编译和启动

来源:互联网 发布:观察者模式java代码 编辑:程序博客网 时间:2024/05/22 11:56

操作系统

Linux系统:deepin 2014.3 desktop

需要文件

1.Edk2或者Udk2014

最新版Edk2获取网址:https://www.github.com/tianocore/edk2

备注:也可以下载tinaocore官网上的稳定版,有Udk2010Udk2014,此时要按照要求配置好整个workspace和根目录的关系。

操作步骤

1.首先为系统安装git

a) 在shell下运行指令:sudo apt-get install git。就可以为系统安装git

2.使用gitclone工具,获得最新的edk2源码

a) 指令如下:git clone https://github.com/tianocore/edk2

3.创建工作目录:edk2

a) 在/home/kair/目录下创建edk2目录,作为edk2的工作空间(此处kair目录是用户名,也就是用户操作空间)

b) 如果是下载的稳定版本,解压之后,将workspace中的文件和BaseToolsUnix)中的文件统一放到目录edk2下面。

设定好之后的目录如下:


4.配置好环境变量,设定好需要的配置文件,如下图:

a) 执行指令:source edksetup.sh


该指令执行成功后,在/edk2/Conf/目录下,会自动生成target.txt,tools_def.txt等一些重要的配置文件。

b )  target.txttools_def.txt这些文件配置了要编译工程是64为还是32位置,使用的C编译器的类型和版本等信息,在这里配置后,文件中的信息就是默认信息。

5.编译UEFI模拟器

a) 编译指令:EmulatorPkg/build.sh -a IA32或者

  EmulatorPkg/build.sh -a X64(64)

b) 默认编译指令:build

c) 默认编译指令对应的是在Conf目录下面,target.txt文件下配置的相关信息,按照其中的配置信息进行的编译。

6.启动UEFI模拟器

a) 启动指令:

EmulatorPkg/build.sh -a IA32 run或者

     EmulatorPkg/build.sh -a X64 run64位)

b) 默认启动指令:build run(对应上面的默认编译指令,前提是配置文件中已经配置 好需要说明的信息)

 

问题和解决方法

1.版本问题:

a) EmulatorPkg取代了UnixPkg。网上很多资料,包括官方文档的资料,都是对应于UnixPkg被取代之前的内容。这一点需要注意。

b) Gcc的版本可能导致问题出现:

较低版本的Gcc可能回和edk2的新版本,在编译的时候出现问题,如果使用edk2

或者Udk2014稳定版,建议用Gcc4.6及以上的版本。

2.编译和启动的问题:

a) 默认的编译命令为build

i. 只需要配置好target.txt等配置文件)之后,就可以编译成功

ii. 特别注意,这里要编译成功的前提有两个:第一,需要在BaseTools目录下执行make命令,生成编译UEFI的工具链;第二,修改target.txt文件,将默认的Nt32Pkg修改为EmbeddedPkg。

b) 新版本下正确的便以指令是:

  EmulatorPkg/build.sh -a IA32或者

  EmulatorPkg/build.sh -a X64(64)

 

c) 正确的运行指令,也就是在上面编译指令后面,加上run,即可启动UEFI模拟器。

这里只执行默认的build run指令,不能成功启动模拟器。

d) 上述的问题的详细原因还在探索和学习的过程中。

 

3.环境中缺少某些第三方库文件


a) 32位编译的时候,报错

 

b) 64位编译的时候,可以通过

 

c) 提示缺少gdb,安装后问题会解决

 

d) 安装后,还有错误,如下:

4.系统中缺少某些东西

a) 


b) 


c) 

 

 

 

 

d) 根据提示信息,修改代码即可成功

 

 

 

c) 成功解决问题:

 

 

d) 成功编译输出hello world

 


 

0 0
原创粉丝点击