首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用qemu在armv8主机上启动虚拟机客户端armv8

如何使用qemu在armv8主机上启动虚拟机客户端armv8
EN

Stack Overflow用户
提问于 2020-08-26 12:56:52
回答 1查看 4.2K关注 0票数 3

如何在Ubuntu18.04 x86_64主机系统上使用qemu x86_64运行虚拟机,当我希望来宾系统成为ARMv8 (Raspberry Pi 3,更具体地说是对Cortex A53处理器感兴趣)时?

背景:

我想在上面提到的主机系统上用ARMv8为一个真正的机器编译一个项目。目前,这是与交叉编译直接在主机系统。出于许多不同的原因,我想要设置一个虚拟机,它编译ARMv8的本机(实际上)。二进制文件需要稍后在真正的ARMv8机器上运行。

除了要安装在主机系统上的Qemu和正确的qemu- system (Aarch64)之外,还需要一个操作系统映像。理想情况下,与运行在实际ARMv8设备上的设备相同。UbuntuCore18.04 64位在IoT上可用,我将它保存到一个名为ubuntu18045arm64rpi3.img.xz的本地文件夹中。

提取后,我得到了提取的图像'ubuntu18045arm64rpi3.img‘

要用给定的映像和想要的体系结构启动虚拟机,我输入以下内容:

代码语言:javascript
复制
sudo qemu-system-aarch64 -m 1024 -cpu cortex-a53 -M virt -drive if=none,file=ubuntu18045arm64rpi3.img,id=hd0

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

现在我的主要问题是:

  1. --我期望虚拟机能够启动,在那里我可以从给定的映像安装操作系统。我做错了什么或者如何实现这个目标?

稍后,我希望在来宾

  1. 机器上安装一个编译器(如果还没有安装),并在那里编译我的项目。之后,我计划将编译好的二进制文件传输到真正的ARMv8机器上,并期望它们能够正常运行。用当前的方法可以做到这一点吗?
EN

回答 1

Stack Overflow用户

发布于 2020-08-27 13:18:57

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

这篇博客文章有一个在QEMU上运行Debian的例子;获得Ubuntu引导可能类似。https://translatedcode.wordpress.com/2017/07/24/installing-debian-on-qemus-64-bit-arm-virt-board/

您的链接是一个特定于raspberry pi的磁盘映像--因为您没有要求QEMU为raspberry pi板建模,所以我建议不要使用它。您想要Ubuntu提供的任何东西作为它们最普通/通用的aarch64映像。如果您要进行“通过UEFI引导”路由,那么您需要一个用于SBSA/UEFI系统的磁盘映像。

关于编译二进制文件的可移植性的第二个问题,这与任何两个Linux系统都是一样的。如果这两个系统具有相同的OS/发行版(所以它们有相同的库版本等),并且安装了相同的运行时库,并且您没有告诉编译器编译来使用目标CPU没有的CPU特性,那么它应该可以工作。

顺便说一句,在这个模拟的安装程序中编译要比当前的交叉编译安装程序或者在实际的AArch64硬件上直接编译二进制文件要慢得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63598185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档