UEFI开发与调试---OVMF 固件简介

本文介绍OVMF(Open Virtual Machine Firmware)的基本功能及如何为不同架构编译UEFI固件。OVMF支持IA32和X64架构,可在QEMU上运行UEFI shell,并支持多种操作系统启动。文章详细介绍了通过修改target.txt配置文件及使用build.sh脚本来编译X64版本OVMF的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OVMF (Open Virtual Machine Firmware ) 旨在支持虚拟机启动的一套edk2 Package。目前支持如下特性:


Current capabilities:

* IA32 and X64 architectures

* QEMU (0.10.0 or later)

  - Video, keyboard, IDE, CD-ROM, serial

  - Runs UEFI shell

  - Optional NIC support.  Requires QEMU (0.12.2 or later)

* UEFI Linux boots

* UEFI Windows 8 boots

* UEFI Windows 7 & Windows 2008 Server boot (see important notes below!)

由上面可知它支持QEMU模拟器,所以我们可以依靠它来做一些前期项目调试。

常规编译

常规编译方法需要我们配置Conf/target.txt:



 Update Conf/target.txt ACTIVE_PLATFORM for OVMF:

                              PEI arch   DXE arch   UEFI interfaces

 * OvmfPkg/OvmfPkgIa32.dsc      IA32       IA32           IA32

 * OvmfPkg/OvmfPkgIa32X64.dsc   IA32       X64            X64

 * OvmfPkg/OvmfPkgX64.dsc       X64        X64            X64



 Update Conf/target.txt TARGET_ARCH based on the .dsc file:

                              TARGET_ARCH

 * OvmfPkg/OvmfPkgIa32.dsc     IA32

 * OvmfPkg/OvmfPkgIa32X64.dsc  IA32 X64

 * OvmfPkg/OvmfPkgX64.dsc      X64


然后通过build命令进行编译,生成的文件在$WORKSPACE/Build/*/*/FV 目录。


* OVMF.FD

  - Please note!  This filename has changed.  Older releases used OVMF.Fv.

* OvmfVideo.rom

  - This file is not built separately any longer, starting with svn r13520.

接下来,使用qemu加载uefi:


qemu-system-x86_64  -bios  "path/to/OVMF.fd" 

脚本编译

OVMF支持使用自带脚本简化编译流程:


 So, for example, to build + run OVMF X64:

 $ OvmfPkg/build.sh -a X64

 $ OvmfPkg/build.sh -a X64 qemu

按照上面的命令执行,会直接运行qemu来加载生成的uefi固件。

实例

以我的本机为例,本机是Linux amd64系统,安装了GCC4.8编译器,如果我要编译一个X64版本的OVMF UEFI固件,需要配置target.txt如下所示:

 ACTIVE_PLATFORM       = OvmfPkg/OvmfPkgX64.dsc
 TARGET                = DEBUG
 TARGET_ARCH           = X64
 TOOL_CHAIN_CONF       = Conf/tools_def.txt
 TOOL_CHAIN_TAG        = GCC48
 BUILD_RULE_CONF = Conf/build_rule.txt
 MAX_CONCURRENT_THREAD_NUMBER = 3

然后进入edk2根目录,执行:

Linux@x86_64: ~/edk2 $ build
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值