编译qemu/arm64的uefi_qemu_efi.fd-程序员宅基地

技术标签: 虚拟化  linux  ARM架构  

在arm64上启动qemu虚拟机有两种方式,一种是通过-kernel 的方式boot kernel,另一种是先启动uefi再boot kernel。本文记录一下怎么编译qemu/arm64 的uefi。

uefi可以大概理解为bios的升级版。它是一个开放的标准,并没有官方的实现。目前用的比较多的实现是intel开源的https://github.com/tianocore/edk2。这个edk2是一个可以跨平台编译uefi的项目,arm64也是用的这个代码。

编译主要是参照arm的开发者文档:https://developer.arm.com/tools-and-software/open-source-software/firmware/edkii-uefi-firmware/building-edkii-uefi-firmware-for-arm-platforms/set-up-the-development-environment。 我就翻译整理一下。由于编译过程比较繁琐,直接写脚本了。

这个脚本要在ubuntu 18.04 for x86上运行。

mkdir source
cd source
export WORKSPACE=$PWD

git clone https://github.com/tianocore/edk2-platforms.git
git clone https://github.com/acpica/acpica.git
git clone https://github.com/tianocore/edk2.git

cd edk2
git submodule update --init
cd ..

sudo apt install python -y
sudo apt install python3 python3-distutils -y
sudo apt install uuid-dev -y

sudo apt install build-essential -y 
sudo apt install bison -y
sudo apt install flex -y

mkdir $WORKSPACE/toolchain
cd $WORKSPACE/toolchain
wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf.tar.xz
tar xf gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf.tar.xz

cd $WORKSPACE
make -C $WORKSPACE/acpica


#build edk2
export GCC5_AARCH64_PREFIX=$WORKSPACE/toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/aarch64-none-elf-
export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms
export IASL_PREFIX=$WORKSPACE/acpica/generate/unix/bin/

export PYTHON_COMMAND=/usr/bin/python
source edk2/edksetup.sh
make -C edk2/BaseTools

#build for qemu/virt
build -a AARCH64 -t GCC5 -p edk2/ArmVirtPkg/ArmVirtQemu.dsc -b DEBUG
build -a AARCH64 -t GCC5 -p edk2/ArmVirtPkg/ArmVirtQemu.dsc -b RELEASE

在Build目录下可以找到QEMU_EFI.fd文件:

find Build/ -name "QEMU_EFI.fd"

这个文件就是uefi 镜像,可以把它当作-bios的参数或者pflash的参数。可以参考https://wiki.ubuntu.com/ARM64/QEMU

更详细的信息可参考上面的链接。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wujianyongw4/article/details/112237044

智能推荐

图像局部特征(二十)--Textons_texton特征-程序员宅基地

文章浏览阅读9.5k次。转自:http://blog.csdn.net/jzwong/article/details/51815134标题对应着一篇paper,链接在这里:http://idm.pku.edu.cn/staff/wangyizhou/papers/Texton_IJCV2005.pdf,但是看了半天并没有很理解,所以就从知网上搜了搜相关内容,根据知网上的介绍做一个总结,只能说是对texton特征的一个..._texton特征

2021中国信创产业研究报告 附下载-程序员宅基地

文章浏览阅读479次。长期以来,我国对非国产IT产品的依赖程度较高,底层架构标准及上层生态构建的话语权较弱,导致了较为被动的局面。信创即信息技术应用创新,是我国IT产业自主创新、发展升级的长久之计。在信创背景下..._2021信创产业研究报告

1617: Special Formation - 规律题_special formation 题解-程序员宅基地

文章浏览阅读208次。1617: Special Formation时间限制: 1 Sec内存限制: 128 MB提交: 3解决: 3[提交] [状态] [讨论版] [命题人:mfdy]题目描述A large number of new microbes have been found in an uninhabited island. Strangely, these microbes, ho..._special formation 题解

08:STM32----DMA数据转运_dma_setcurrdatacounter-程序员宅基地

文章浏览阅读738次,点赞3次,收藏6次。在stm32f10x dmah文件中配置----MDA初始化在stm32f10x dmah文件中配置----开启MDA在stm32f10x dmah文件中配置----数据寄存器设置: 设置当前数据寄存器 , 就是给这个传输计数器写数据的, 和配置DMA中X.DMA_Buffersize参数相似: 获取当前数据寄存器, 这个函数就是返回传输计数器的值 , 在转运完成后把标志位值1在stm32f10x dmah文件中配置----清除中断标志位: 清除中断标志位。_dma_setcurrdatacounter

OLED的SPI接口数据显示_typedef struct { unsigned char index[2]; unsigned -程序员宅基地

文章浏览阅读848次,点赞2次,收藏7次。目录实验要求准备工作结果呈现总结实验要求准备工作1、准备实验所需要的程序代码和资料,参考在如下网址:http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module2、打开下图路径,在上述链接中3、进行野火stm32主板与OLED屏的连线4、连线完成5、使用软件生成字模6、修改部分代码将6、编译成功,使用串口工具烧录结果呈现可以看到OLED屏亮显示学号姓名总结..._typedef struct { unsigned char index[2]; unsigned char msk[32]; }typfnt_g

Mac/OSX 系统如何采集扬声器(代码实现 附源码)_macos 音频采集-程序员宅基地

文章浏览阅读974次。总所周知由于版权问题,mac系统是无法通过api采集扬声器的音量的,一些录屏软件大多采用soundflower,lookloop等插件来实现扬声器的采集。soundflower这种免费的插件已经没人维护了,最新的M1 已经无法使用了。这里推荐一个免费的支持M1架构的插件blackhole,操作与soundflower类似,创建一个多输出设备,将录制的扬声器设置为该多输出设备,看起来像这样:在我们使用obs,系统自带的录屏软件时就可以选择该输出设备作为扬声器采集从而实现扬声器音量采集。._macos 音频采集

随便推点

2-3 jsr303参数校验和全局异常处理_validatorutil.ismobile-程序员宅基地

文章浏览阅读1k次。1、定义注解(IsMobile),规则①在 LoginController类中:public Result<Boolean> doLogin(@Valid LoginVo loginVo) {//loginVo 相当于是表单之中提交的数据②在LoginVo类中:import com.mydre.miaosha.validator.IsMobile;public class LoginV..._validatorutil.ismobile

神经网络之反向传播算法(BP)公式推导_bp神经网络传播公式-程序员宅基地

文章浏览阅读862次。反向传播算法详细推导反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。 在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播..._bp神经网络传播公式

目标检测(十九)--SoftNMS_gpu softmns-程序员宅基地

文章浏览阅读1.6w次,点赞4次,收藏23次。转自:http://blog.csdn.net/shuzfan/article/details/71036040一篇讲通过改进NMS来提高检测效果的论文。文章链接: 《Improving Object Detection With One Line of Code》Github链接: https://github.com/bharatsingh430/soft-nmsM..._gpu softmns

vue 使用canvas来进行画线条_vue canvas 画线-程序员宅基地

文章浏览阅读2.9k次。下载canvasnpm i --save canvas//html部分 <divid="content"><canvasid="canvas"width="900%"height="250%"></canvas><divclass="con-left"><divclass="item"v-for="(v,i)inthi..._vue canvas 画线

【C#】通过遍历IFrame访问页面元素_iframe遍历子页面元素-程序员宅基地

文章浏览阅读4.9k次。最近在做一个小项目,期间需要用到C#去操作IE页面中的元素,实现自动填写表单并且提交的功能,想这网上关于这方面的东西肯定很多,于是开始在网上找资料。在逆心的博客上找到些东西对自己帮助很大,原文链接:http://www.cnblogs.com/kissdodog/p/3725774.html1.首先添加必须的两个控件的引用Microsoft Internet Controls_iframe遍历子页面元素

推荐文章

热门文章

相关标签