如何在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‘
要用给定的映像和想要的体系结构启动虚拟机,我输入以下内容:
sudo qemu-system-aarch64 -m 1024 -cpu cortex-a53 -M virt -drive if=none,file=ubuntu18045arm64rpi3.img,id=hd0这给了我一个这样的窗口:

现在我的主要问题是:
稍后,我希望在来宾
发布于 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硬件上直接编译二进制文件要慢得多。
https://stackoverflow.com/questions/63598185
复制相似问题