UEFI之虚拟环境搭建(EmulatorPkg)

概要

模拟器平台介绍 :
一个仿真平台并不是一个实际的硬件平台 , 但它旨在证明 EDKII 核心模块的稳定性和独立于硬件可以开发模块。仿真平台和实际平台之间的差异是其加载器和仿真的硬件设备。
Emulator虚拟环境,用来取代Nt32Pkg和UnixPkg,可以跨平台编译运行的一个虚拟器。

源码

git clone https://github.com/tianocore/edk2.git
cd edk2
git submodule update --init
cd ..

环境

1.更新软件源,sudo apt-get update

2.安装gcc4.8
sudo apt-get install gcc-4.8 g++-4.8
如果已经安装gcc,可以使用下面命令切换

添加
   sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40
   sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
切换
   sudo update-alternatives --config gcc

3.安装nasm
sudo apt-get install nasm

4.安装build
sudo apt-get install build-essential uuid-dev
sudo apt-get install iasl

5.安装python

       sudo apt-get install python
       sudo apt-get install python-pip
       sudo apt-get install python3-distutils

6.在edk根目录执行
source edksetup.sh

7.在 BaseTools目录下编译工具
make
建立完成后,试试看能否编译。

source edksetup.sh
build -p MdeModulePkg/MdeModulePkg.dsc -t GCC48

8.在Emulator虚拟环境edk2/EmulatorPkg/EmulatorPkg.dsc修改为

     ##
     #  PEI Phase modules
     ##
    MdeModulePkg/Core/Pei/PeiMain.inf{
      <BuildOptions>
        *_*_*_CC_FLAGS=-O0
    }

9.编译
Emulator虚拟环境
EmulatorPkg/build.sh
或者:
build -p $WORKSPACE/EmulatorPkg/EmulatorPkg.dsc -a X64 -b DEBUG -t GCC5 -D BUILD_64 -D UNIX_SEC_BUILD -n 3

10.运行
Emulator虚拟环境
EmulatorPkg/build.sh run

/usr/bin/cgdb B U I L D R O O T A R C H / H o s t − q − c d = BUILD_ROOT_ARCH/Host -q -cd= BUILDROOTARCH/Hostqcd=BUILD_ROOT_ARCH -x $WORKSPACE/EmulatorPkg/Unix/GdbRun.sh

问题

1、安装不了python3-distutils,提示无法定位

sudo vim /etc/apt/sources.list

添加源:

deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-proposed main multiverse restricted universe

再执行如下指令:

  sudo apt-get update
  sudo apt-get install python3-distutils

2、Trim.py: error: no such option: --asm-file
安装完如下3条命令问题就没有了,也不知道具体哪条解决的;

pip install brotli
sudo apt install build-essential uuid-dev
sudo apt install acpica-tools

3、 在编译AppPkg和Demo时,出现如下问题:

/usr/bin/ld: 并不支持从格式 pe-i386 (/home/zhubo/loongson/02-code/edk2/Build/AppPkg/DEBUG_GCC5/IA32/StdLib/LibC/LibC/OUTPUT/LibC.lib(ftol2.obj)) 到格式 elf32-i386 (/home/zhubo/loongson/02-code/edk2/Build/AppPkg/DEBUG_GCC5/IA32/AppPkg/Applications/Sockets/SetHostName/SetHostName/DEBUG/SetHostName.dll) 的重寻址链结

是由于在ubuntu64上编译32位应用导致的,添加-a X64后正常了;

build -p AppPkg/AppPkg.dsc -t GCC5 -a X64

4、警告变error
可以在 Flags 加 -Wno-error 试试

5、编译报缺少东西,如brotli/c/enc/encoder_dict.o: 没有那个文件或目录
git submodule update --init

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值