虚拟机里的程序怎么在arm实验箱运行不了

2024年09月06日 阅读 (54)

因国产化环境部署需要,需要将跑在X86 amd64上的程序迁移至Euler arm64系统上,为开发和调试方便,需要在本地搭建相应的操作系统模拟环境,经探索发现,应用比较多的VM和VBOX都没找到Euler arm64的操作系统解决方案,最终选择Qemu来装载openEuler系统。

QEMU是一个开源的处理器模拟器和虚拟机管理器,可以在多种主机平台上运行,并且支持多种硬件架构。它最初由Fabrice Bellard于2003年发起,旨在模拟各种处理器架构,包括x86、ARM、MIPS等,并提供虚拟化功能,使得用户可以在单个主机上运行不同架构的操作系统。

以下是QEMU的一些主要特点和用途:

  1. 跨平台支持:QEMU可以在多种主机平台上运行,包括x86、ARM、PowerPC等,并且可以模拟多种处理器架构。
  2. 硬件模拟:它能够模拟计算机硬件组件,如处理器、内存、存储设备、网络接口等,从而允许在虚拟化环境中运行各种操作系统。
  3. 虚拟化支持:QEMU支持硬件虚拟化,可以与KVM等虚拟化技术结合使用,提供高性能的虚拟机。
  4. 快照和恢复:它支持虚拟机的快照功能,可以在虚拟机运行时创建快照,并在需要时恢复到之前的状态。
  5. 嵌入式开发:QEMU常用于嵌入式系统开发,可以模拟嵌入式硬件环境,帮助开发人员调试和测试嵌入式软件。
  6. 开源免费:QEMU是基于GPL许可证发布的开源软件,可以免费使用和修改。

总的来说,QEMU是一个功能强大的虚拟化和模拟器工具,广泛应用于开发、测试和运行各种操作系统和应用程序。

OpenEuler 是一个基于开源社区的企业级 Linux 发行版,由中国科学院软件研究所牵头开发和维护,旨在为用户提供稳定、安全、可靠的操作系统平台。下面是关于 OpenEuler 系统的一些介绍:

  1. 企业级定位:OpenEuler是面向企业级用户的操作系统,主要面向服务器、云计算、容器、边缘计算等场景,提供了丰富的功能和工具,以满足企业级用户的需求。
  2. 开放合作:OpenEuler采用开放的开发模式,积极吸纳全球开源社区的贡献和参与,通过开源合作的方式推动系统的发展和完善。
  3. 社区驱动:OpenEuler社区由志愿者、企业和开发者共同参与,致力于推动 openEuler 系统的开发、测试和文档编写,以及软件包的维护和更新。
  4. 多架构支持:OpenEuler支持多种处理器架构,包括 x86、ARM、PowerPC 等,适用于各种不同类型的硬件平台。
  5. 安全性和稳定性:OpenEuler注重系统的安全性和稳定性,提供了一系列安全功能和机制,如安全审计、安全加固、漏洞修复等,以保障系统的可靠性和安全性。
  6. 应用生态:OpenEuler提供了丰富的应用程序和工具,支持容器化技术和微服务架构,以满足不同场景下的应用需求。

总的来说,OpenEuler 是一个开源、企业级的 Linux 发行版,致力于推动开源社区的合作与发展,为企业用户提供高性能、稳定可靠的操作系统平台。

虚拟机里的程序怎么在arm实验箱运行不了(1)

Qemu下载

这里下载的是qemu-w64-setup-20231224.exe,下载完后双击进行安装,需要修改安装目录,因qemu安装完后,没有桌面快捷式以及图形界面,需要记住对应的安装目录,进入到安装目录使用命令行运行。

虚拟机里的程序怎么在arm实验箱运行不了(2)

openEuler下载

这里可以下载最新的系统镜像,下载服务器版的标准版的ISO镜像,大小在3.1GB,本文下载的是21.09的版本。

第三步:QEMU引导文件下载,QEMU需要通过QEMU_EFI.fd进行引导启动,其下载地址:

第四步:虚拟网络安装,windows下采用tap作为虚拟适配器,通过网址:

下载对应版本的tap,这里下载最新版本的进行安装:

虚拟机里的程序怎么在arm实验箱运行不了(3)

tap-windows-9.24.7-I601-Win10

安装完后,在 控制面板所有控制面板项网络连接,可以看到新增了一个本地连接,将其改名为tap0

虚拟机里的程序怎么在arm实验箱运行不了(4)

TAP网络适配器

第五步:配置上网,TAP网络适配器上网有两种方式:

1.共享网络,将可上网的物理网卡对应的网络适配器共享给tap0,使其可访问外网,如图所示:

虚拟机里的程序怎么在arm实验箱运行不了(5)

连接共享

设置完共享连接后,查看windows对应的tap0的ipv4地址信息:

虚拟机里的程序怎么在arm实验箱运行不了(6)

IPV4地址信息

我们需要把图上的IPV4对应的地址信息作为虚拟机的网关,即其网关地址为192.168.137.1同时在Qemu对应的系统中,设置网卡IP地址信息,进入如图目录(/etc/sysconfig/network-scripts):

虚拟机里的程序怎么在arm实验箱运行不了(7)

网卡信息设置目录

修改为:

TYPE=EthernetPROXY_METHOD=noneBROSER_ONLY=noBOOTPROTO=none#BOOTPROTO=DHCPDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=enp0s1UUID=8a9db372-20ea-4be6-81c9-ed7a5dca0a24DEVICE=enp0s1ONBOOT=yesIPADDR=192.168.137.118PREFIX=24GATEWAY=192.168.137.1DNS1=114.114.114.114DNS2=8.8.8.8IPV6_PRIVACY=no

重启网络服务:sudo systemctl restart NetworkManager,通过ping的方式查看是否可以连到网络:

虚拟机里的程序怎么在arm实验箱运行不了(8)

外网连接

宿主机访问:

虚拟机里的程序怎么在arm实验箱运行不了(9)

宿主机访问

2.桥接方式,通过将虚拟网络适配器和物理网络适配器桥接的方式配置上网,适用于多个虚拟网络共享网络的场景,操作如下:

1)查看物理网卡的IP信息:

虚拟机里的程序怎么在arm实验箱运行不了(10)

物理网卡IP信息

需要记录IPV4地址和默认网关地址,后面需要将这两个地址设置到网桥。

2)按住CTRL选中tap0和WLAN,需要同时选中:

虚拟机里的程序怎么在arm实验箱运行不了(11)

适配器选择

然后,右键弹出操作框,选择桥接:

虚拟机里的程序怎么在arm实验箱运行不了(12)

桥接两个网络适配器

两个网络适配器桥接后,出现网桥图标:

虚拟机里的程序怎么在arm实验箱运行不了(13)

网桥

如果桥接时出现错误,只需要双击网桥,打开网桥属性,勾选tap0和wlan点击确定即可

虚拟机里的程序怎么在arm实验箱运行不了(14)

网桥属性

双击internet协议版本4(TCP/IPV4),将IP地址和网关修改为物理网卡的地址和网关

3.虚拟机IP信息设置:将/etc/sysconfig/network-scripts/ifcfg-enp0s1的IP信息修改为与网桥同个网段,以及将网关设置为网桥的网关,即可以完成网络通讯。

第六步:Qemu安装OpenEuler,将需要的文件下载到F盘,分别是:

引导文件:F:isoQEMU_EFI.fd

镜像文件:F:isoopenEuler-aarch64-dvd.iso

Qemu目录:F:qemu

数据目录:

进入F:qemu,通过命令行执行创建40G的虚拟机虚拟磁盘镜像的命令:

qemu-img create -f qcow2 F:vmdatadisk1.qcow2 40G

虚拟机里的程序怎么在arm实验箱运行不了(15)

虚拟机虚拟磁盘镜像

编写安装脚本:

qemu-system-aarch64.exe -m 4000 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios F:isoQEMU_EFI.fd -net nic,macaddr="52:54:00:12:34:56" -net tap,ifname=tap0 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=F:isoopenEuler-aarch64-dvd.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=F:vmdatadisk1.qcow2,id=hd0 -device virtio-blk-device,drive=hd0

依据自身的设备条件,对对应的参数进行调整,以满足运行条件,参数解释:

qemu-system-aarch64: 这是启动 QEMU 模拟器的命令。指定了使用的处理器架构(ARM64)。-m 4000: 分配给虚拟机的内存大小为 4000MB(4GB)。-cpu cortex-a72: 指定虚拟机使用 Cortex-A72 架构的 CPU。-smp 4,cores=4,threads=1,sockets=1: 配置虚拟机的处理器拓扑结构。指定了总共 4 个逻辑处理器,每个 CPU 插槽中有 4 个核心,每个核心有 2 个线程。-M virt: 使用 virt 机型(虚拟机类型)。-bios F:isoQEMU_EFI.fd: 指定 EFI 固件文件的路径,用于模拟虚拟机的启动过程。-net nic,macaddr="52:54:00:12:34:56" -net tap,ifname=tap0: 配置虚拟机的网络接口。分为两部分,第一部分是创建一个网络接口卡,指定 MAC 地址;第二部分是连接到一个 TAP 设备,指定 TAP 设备的名称和模型。-device nec-usb-xhci -device usb-kbd -device usb-mouse: 配置 USB 控制器和 USB 设备,包括键盘和鼠标。-device VGA: 添加一个 VGA 显示设备。-drive if=none,file=F:isoopenEuler-aarch64-dvd.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom: 挂载一个光盘镜像文件到虚拟机中,使用 virtio-scsi 设备,连接到 SCSI 控制器,并指定驱动器 ID。-drive if=none,file=F:vmdatadisk1.qcow2,id=hd0 -device virtio-blk-device,drive=hd0: 添加一个虚拟磁盘驱动器到虚拟机中,使用 virtio-blk 设备,连接到驱动器 ID。这些参数用于配置和启动 ARM64 架构的虚拟机,并提供了内存、处理器、网络、存储等方面的设置。

进入F:qemu,执行命令后,进入安装页面:

虚拟机里的程序怎么在arm实验箱运行不了(16)

安装OpenEuler

直接选择第一个选项,进入安装界面,选择中文语言:

虚拟机里的程序怎么在arm实验箱运行不了(17)

安装openEuler 21.09

虚拟机里的程序怎么在arm实验箱运行不了(18)

系统设置

虚拟机里的程序怎么在arm实验箱运行不了(19)

配置完成

虚拟机里的程序怎么在arm实验箱运行不了(20)

系统安装中

安装时间大概需要20-30分钟,在这其间可以做做其他事情,让QEMU自动完成系统安装工作。

郑重声明:玄微运势的内容来自于对中国传统文化的解读,对于未来的预测仅供参考。