qemu安装(使用 QEMU 调试 TF-A (Trusted Firmware-A) 之一)

前言

我们计划使用QEMU模拟Cortex-A57处理器来运行TF-A。
QEMU是一个免费开源的模拟器,可以模拟各种不同的处理器架构。
TF-A(Trusted Firmware-A)是用于ARMv8-A处理器开发的一个开放源码的参考实现,不同的芯片厂商会根据它进行二次开发,以实现芯片的安全启动和运行。

本文记录了qemu安装过程,作为使用 QEMU 调试 TF-A系列博文的第一篇。

在下一篇博文里(《使用 QEMU 调试 TF-A开发环境建立(使用 QEMU 调试 TF-A (Trusted Firmware-A) 之二)》)我们将演示如何建立一个开发环境,用来使用QEMU模拟Cortex-A57处理器运行和调试TF-A。


1、qemu安装准备

1.1 我的系统环境

  • 宿主机:使用 Intel 处理器的 Windows 10 电脑。
  • 虚拟机:在 VMware Workstation 中安装了 Ubuntu 20.04。

1.2 QEMU 调试 TF-A系统环境配置。

在 Ubuntu 虚拟机上运行 QEMU 时,需要确保虚拟机具有足够的资源和配置以满足 QEMU 调试 TF-A系统需求。以下是我们的环境配置。

  • CPU:虚拟机应具有至少 1 个(建议 2 个或更多)虚拟 CPU 核心,以便在运行 QEMU 时获得良好的性能。
  • 内存:分配给虚拟机的内存取决于要在 QEMU 中运行的模拟环境。建议分配至少 2 GB 的内存给虚拟机,如果要运行资源密集型的模拟环境,可能需要更多内存。
  • 存储空间:确保虚拟机具有足够的存储空间以容纳 QEMU 的安装、虚拟磁盘映像和其他相关文件。建议预留至少 10-20 GB 的存储空间。
  • 网络:虚拟机应具有正常的网络连接,以便在需要时下载 QEMU 和其他相关软件包。
  • 嵌套虚拟化:宿主机上运行的虚拟机中使用 QEMU/KVM(即在 Ubuntu 虚拟机上运行),那么需要嵌套虚拟化。这是因为,Ubuntu 虚拟机将成为第二层虚拟化,而 QEMU/KVM 将在这个虚拟机中利用宿主机处理器的虚拟化扩展。
  • 模拟物理板卡:使用ARM FVP基板(Fixed Virtual Platform)作为QEMU-System-Arm的物理板卡。

1.3 检查系统环境是否支持嵌套虚拟化

要检查系统环境是否支持嵌套虚拟化,按照以下步骤操作:

  • 首先,确认宿主机处理器支持虚拟化。对于 Intel 处理器,是 VT-x 技术;对于 AMD 处理器,是 AMD-V 技术。可以查看处理器规格或访问制造商的官方网站,以确认处理器是否支持虚拟化技术。

  • 确保宿主机 BIOS/UEFI 设置已启用虚拟化支持。需要重启计算机并进入 BIOS/UEFI 设置,在其中找到虚拟化相关设置(通常在高级设置或 CPU 配置中),然后启用该功能。具体设置方法因计算机和 BIOS/UEFI 版本而异,请参考计算机或主板说明书以获得详细信息。

  • 在宿主机操作系统上检查嵌套虚拟化是否已启用。对于 Windows 10,打开 PowerShell 或命令提示符,输入以下命令:

    systeminfo
    

    在输出中查找“Hyper-V 要求:”,在输出的结果中,查找以下行:

    Hyper-V Requirements:      VM Monitor Mode Extensions: Yes
                           Virtualization Enabled In Firmware: Yes
                           Second Level Address Translation: Yes
                           Data Execution Prevention Available: Yes
    
    

或者

Hyper-V 要求:     虚拟机监视器模式扩展: 是
                  固件中已启用虚拟化: 是
                  二级地址转换: 是
                  数据执行保护可用: 是

如果所有这些项目都标有 “Yes”,那么 Intel 处理器支持嵌套虚拟化。

  • 检查虚拟机软件是否支持嵌套虚拟化。我们使用的是 VMware Workstation,它是支持嵌套虚拟化的。确保已在虚拟机设置中启用了嵌套虚拟化。可以在虚拟机设置的“处理器”或“CPU”部分找到,其中将允许启用或禁用嵌套虚拟化选项设置为启用。在这里插入图片描述- 在虚拟机的操作系统(如 Ubuntu)中检查嵌套虚拟化是否可用。打开终端并输入以下命令:
    对于 Intel 处理器:

    egrep -c '(vmx)' /proc/cpuinfo
    
  • 对于 AMD 处理器:

    egrep -c '(svm)' /proc/cpuinfo
    

如果输出结果大于 0,表示嵌套虚拟化已在 Ubuntu 虚拟机上启用。完成以上步骤后,可以确认系统环境是否支持嵌套虚拟化。

2 安装 QEMU

在我的系统环境中,按照以下步骤在 Ubuntu 20.04 虚拟机上安装 QEMU:

  • 打开 Ubuntu 20.04 虚拟机。
  • 打开终端(Terminal)。
  • 更新系统软件包列表:
    sudo apt update
    
  • 安装 QEMU 及其相关工具包:
    sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
    

这将安装 QEMU 模拟器、KVM 模块、libvirt 虚拟化管理库、虚拟网络管理工具以及 Virt-Manager 图形化管理工具。

  • 安装完成后,验证 QEMU 安装是否成功:
    qemu-system-x86_64 --version
    
    QEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.41)
    Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
    
    

3 安装QEMU-System-Arm

QEMU(Quick Emulator)是一个开源的处理器模拟器和虚拟化软件。它支持多种处理器架构,包括x86、x86_64、ARM、MIPS、PowerPC等。qemu-system-arm是QEMU的一个子项目,专门用于模拟ARM架构的处理器。它可以让您在非ARM硬件(例如x86或x86_64处理器)上运行ARM代码,非常适合开发、调试以及测试ARM程序。
qemu-system-arm的主要特点如下:
处理器架构支持:qemu-system-arm支持多种ARM处理器架构,包括ARMv7、ARMv8(AArch64)等。这使得开发者能够在一个统一的平台上进行针对不同ARM处理器的开发和调试。
设备模拟:qemu-system-arm不仅可以模拟处理器,还可以模拟一定数量的外围设备,如串行端口、网络接口、图形显示等。这使得开发者能够更好地进行系统级的开发和测试。
可扩展性:qemu-system-arm具有很好的可扩展性,用户可以根据需要添加新的设备模型和处理器架构。这使得qemu-system-arm能够适应不断发展的ARM生态系统。

跨平台:QEMU本身是跨平台的,可以在多种操作系统上运行,包括Linux、macOS和Windows。这使得开发者可以在自己熟悉的操作系统环境中进行ARM开发和调试。

与调试器集成:qemu-system-arm可以与常见的调试器(如gdb)集成,从而方便用户对代码进行调试。通过使用QEMU的远程调试功能,开发者可以在宿主机上运行调试器,而在QEMU虚拟机上运行被调试的代码。

在Ubuntu虚拟机中安装qemu-system-arm,使用以下命令安装:

sudo apt-get update
sudo apt-get install qemu-system-arm

通过以下的指令,可以查看QEMU支持的处理器列表:

qemu-system-aarch64 -M virt -cpu help

Available CPUs:
  arm1026
  arm1136
  arm1136-r2
  arm1176
  arm11mpcore
  arm926
  arm946
  cortex-a15
  cortex-a53
  cortex-a57
  cortex-a7
  cortex-a8
  cortex-a9
  cortex-m3
  cortex-m4
  cortex-r5
  pxa250
  pxa255
  pxa260
  pxa261
  pxa262
  pxa270-a0
  pxa270-a1
  pxa270
  pxa270-b0
  pxa270-b1
  pxa270-c0
  pxa270-c5
  sa1100
  sa1110
  ti925t

如果在列表中未能找到需要的处理器,可以尝试升级QEMU以获取对需要的cpu的支持。命令如下:

sudo apt-get update
sudo apt-get upgrade qemu-system-arm

4 qemu-system-aarch64 和 qemu-system-arm

qemu-system-aarch64 和 qemu-system-arm 都是 QEMU(Quick Emulator)项目的一部分,用于仿真 ARM 架构的处理器。尽管它们都是为 ARM 设计的,但它们之间有一些关键区别:

目标架构:

qemu-system-aarch64 专为 ARMv8-A 架构(64 位)设计,支持 AArch64(ARM 64 位)指令集。
qemu-system-arm 则主要针对 ARMv7(以及部分 ARMv6 和 ARMv5)架构(32 位),支持 ARM、Thumb、Thumb-2 等指令集。
设备仿真:

两者都支持不同的系统设备仿真,但由于它们针对的架构不同,因此支持的设备类型也有所不同。例如,qemu-system-aarch64 支持的一些开发板和设备包括 Raspberry Pi 3,Xilinx Versal等,而 qemu-system-arm 支持的设备包括 Raspberry Pi 2,Versatile Express等。
应用场景:

如果你需要在 ARMv8-A(64 位)环境下进行开发、测试或调试,那么应使用 qemu-system-aarch64。
如果你需要在 ARMv7(32 位)环境下进行开发、测试或调试,那么应使用 qemu-system-arm。
总之,qemu-system-aarch64 和 qemu-system-arm 都是 QEMU 项目的一部分,分别用于仿真 64 位和 32 位的 ARM 架构处理器。根据你的需求和目标硬件平台,你可以选择适当的工具进行仿真。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值