gpt4 book ai didi

arm - 如何使用qemu在amd64主机上启动虚拟机guest armv8

转载 作者:行者123 更新时间:2023-12-05 06:12:34 29 4
gpt4 key购买 nike

如何在 Ubuntu 18.04 x86_64 主机 系统上运行带有 qemu 的虚拟机,当我希望 guest 系统是ARMv8(Raspberry Pi 3,对 Cortex A53 处理器更感兴趣)?

背景:

我想在上述主机系统上使用 ARMv8 为真机编译一个项目。目前,这是直接在主机系统中通过交叉编译完成的。出于许多不同的原因,我想设置一个虚拟机来为 ARMv8(虚拟地)编译 native 二进制文件。稍后需要在真正的 ARMv8 机器上运行二进制文件。

除了要在主机系统上安装 Qemu 和正确的 qemu-system-aarch64 之外,还需要操作系统的镜像。理想情况下与在真实 ARMv8 设备上运行的相同。 Ubuntu IoT Core 18.04 64 位可在 https://ubuntu.com/download/raspberry-pi 获得。我将它保存到名为 ubuntu18045arm64rpi3.img.xz 的本地文件夹中。

解压后得到解压后的镜像'ubuntu18045arm64rpi3.img'

要使用给定的图像和想要的架构启动虚拟机,我输入:

sudo qemu-system-aarch64 -m 1024 -cpu cortex-a53 -M virt -drive if=none,file=ubuntu18045arm64rpi3.img,id=hd0

这给了我一个这样的窗口: qemu monitor

现在我的主要问题是:

  1. 我希望启动一个虚拟机,我可以在其中从给定的镜像安装操作系统。我做错了什么或如何实现这个目标?

  2. 稍后,我想在 guest ARMv8 机器上安装一个编译器(如果还没有的话)并在那里编译我的项目。之后我打算将编译后的二进制文件传输到真正的 ARMv8 机器上,并希望它们能够顺利运行。目前的方法是否可行?

最佳答案

您不能只将磁盘镜像传递给 aarch64 QEMU 并让它启动。您需要传递一个内核来启动,或者传递一个 BIOS(可能是 UEFI)镜像(然后可以从磁盘镜像读取内核)。

这篇博文有一个在 QEMU 上运行 Debian 的例子;让 Ubuntu 启动可能是相似的。 https://translatedcode.wordpress.com/2017/07/24/installing-debian-on-qemus-64-bit-arm-virt-board/

您的链接指向特定于树莓派的磁盘镜像——因为您没有要求 QEMU 为树莓派板建模,所以我建议不要使用它。你想要任何 Ubuntu 提供的作为他们最正常/通用的 aarch64 图像。如果您要走“通过 UEFI 引导”路线,那么您需要一个用于 SBSA/UEFI 系统的磁盘镜像。

关于已编译二进制文件的可移植性的第二个问题,这实际上与任何两个 Linux 系统都一样。如果这两个系统具有相同的操作系统/发行版版本(因此它们具有相同的库版本等),并且安装了相同的运行时库集,并且您没有告诉编译器编译以使用 objective-c PU 不使用的 CPU 功能' 有,那么它应该可以工作。

顺便说一句,在这个模拟设置中编译将比您当前的交叉编译设置或直接在真实 AArch64 硬件上直接编译二进制文件慢得多。

关于arm - 如何使用qemu在amd64主机上启动虚拟机guest armv8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63598185/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com